The Meteorologist
Messages postés232Date d'inscriptionjeudi 18 janvier 2007StatutMembreDernière intervention 3 novembre 2011
-
24 sept. 2009 à 21:04
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
25 sept. 2009 à 12:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 25 sept. 2009 à 12:23
à noter qu'il faut organiser les frames 'Carte' dans le bon ordre (la carte(0) au dessus des autres...)
utilises pour cela les raccourcis Ctrl+J et Ctrl+K
sinon, il est possible de faire :
Private Sub NouvellePartie()
Dim i As Long
For i = 0 To Carte.UBound Carte(i).Visible (i 0)
Next
mnCarteCourante = 0
mnResultat = 0
CcBtnOui.Enabled = True
CcBtnNon.Enabled = True
End Sub
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 25 sept. 2009 à 12:18
Nettoyant ton code, j'ai renommé les controles, viré le bouton Quitter et le bouton départ. j'obtient alors un code que je pense plus clair :
Private mnResultat As Long
Private mnCarteCourante As Long
Private Sub CarteSuivante()
Carte(mnCarteCourante).Visible = False
mnCarteCourante = mnCarteCourante + 1
Carte(mnCarteCourante).Visible = True
If mnCarteCourante = Carte.Ubound Then
CcLblResultat.Caption = CStr(mnResultat)
CcBtnOui.Enabled = False
CcBtnNon.Enabled = False
End If
End Sub
Private Sub NouvellePartie()
Carte(0).Visible = True
mnCarteCourante = 0
mnResultat = 0
CcBtnOui.Enabled = True
CcBtnNon.Enabled = True
End Sub
Private Sub CcBtnNouvellePartie_Click()
NouvellePartie
End Sub
Private Sub Form_Load()
NouvellePartie
End Sub
Private Sub CcBtnNon_Click()
CarteSuivante
End Sub
Private Sub CcBtnOui_Click()
mnResultat = mnResultat + 2 ^ mnCarteCourante
CarteSuivante
End Sub
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 25 sept. 2009 à 12:15
Pourquoi déclares-tu toutes ces composants inutiles:
(Flexgrid, Webbrowser, onglets, etc)
Private Sub Form_Load()
Jeu.Left = 0
Jeu.Top = 0
Jeu.Width = Screen.Width / 2
Jeu.Height = Screen.Height / 2
End Sub
pourquoi un tel positionnement ? là, ta form vient se glisser sous ma barre de taches...
Dim v, i, valeur
déclare tes variables dans la procédure où elles sont requises.
Private Sub Quitter_Click()
End
End Sub
proscrit l'instruction End, déclarge ta form
If Carte(i - 1).Visible -1 Then valeur valeur + (v): Carte(i - 1).Visible = 0: Carte(i).Visible = -1: GoTo fin
le but est d'ecrire le moins de ligne ?
c'est illisible.
concernant le Goto , un Exit For forcerait à quitter la boucle.
valeur = valeur
euh.... là, j'avoue.... c'est fort !
"si il ce trouve" => "s'il se trouve"
dans Non_click, pourquoi changer v ? pourquoi changer le résultat ?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 25 sept. 2009 à 11:53
The Meteorologist
Messages postés232Date d'inscriptionjeudi 18 janvier 2007StatutMembreDernière intervention 3 novembre 20111 24 sept. 2009 à 21:04
Salut Vonvon51,
Puisque tu veux des conseils, j'ai quelques remarques à faire sur ton code :
"Dim v, i, valeur"
Évite de déclarer des variables sans nom de type, aussi non ta variable sera déclarée par défaut comme Variant et ça peut devenir très gourmand. En plus tu perds en lisibilité ... Choisis aussi des noms de variables plus clairs.
"Oui.Enabled -1: Non.Enabled -1: Nouveau.Enabled = -1"
Ici il y deux choses, d'abord la conversion implicite de Integer en Boolean et ensuite la juxtaposition des lignes avec ":". Crois-moi c'est deux habitudes à bannir immédiatement =) En gros écris directement True ou False ou convertis explicitement tes types avec un cast. Ici CBool(-1) par exemple.
25 sept. 2009 à 12:23
utilises pour cela les raccourcis Ctrl+J et Ctrl+K
sinon, il est possible de faire :
Private Sub NouvellePartie()
Dim i As Long
For i = 0 To Carte.UBound Carte(i).Visible (i 0)
Next
mnCarteCourante = 0
mnResultat = 0
CcBtnOui.Enabled = True
CcBtnNon.Enabled = True
End Sub
25 sept. 2009 à 12:18
Private mnResultat As Long
Private mnCarteCourante As Long
Private Sub CarteSuivante()
Carte(mnCarteCourante).Visible = False
mnCarteCourante = mnCarteCourante + 1
Carte(mnCarteCourante).Visible = True
If mnCarteCourante = Carte.Ubound Then
CcLblResultat.Caption = CStr(mnResultat)
CcBtnOui.Enabled = False
CcBtnNon.Enabled = False
End If
End Sub
Private Sub NouvellePartie()
Carte(0).Visible = True
mnCarteCourante = 0
mnResultat = 0
CcBtnOui.Enabled = True
CcBtnNon.Enabled = True
End Sub
Private Sub CcBtnNouvellePartie_Click()
NouvellePartie
End Sub
Private Sub Form_Load()
NouvellePartie
End Sub
Private Sub CcBtnNon_Click()
CarteSuivante
End Sub
Private Sub CcBtnOui_Click()
mnResultat = mnResultat + 2 ^ mnCarteCourante
CarteSuivante
End Sub
25 sept. 2009 à 12:15
(Flexgrid, Webbrowser, onglets, etc)
Private Sub Form_Load()
Jeu.Left = 0
Jeu.Top = 0
Jeu.Width = Screen.Width / 2
Jeu.Height = Screen.Height / 2
End Sub
pourquoi un tel positionnement ? là, ta form vient se glisser sous ma barre de taches...
Dim v, i, valeur
déclare tes variables dans la procédure où elles sont requises.
Private Sub Quitter_Click()
End
End Sub
proscrit l'instruction End, déclarge ta form
If Carte(i - 1).Visible -1 Then valeur valeur + (v): Carte(i - 1).Visible = 0: Carte(i).Visible = -1: GoTo fin
le but est d'ecrire le moins de ligne ?
c'est illisible.
concernant le Goto , un Exit For forcerait à quitter la boucle.
valeur = valeur
euh.... là, j'avoue.... c'est fort !
"si il ce trouve" => "s'il se trouve"
dans Non_click, pourquoi changer v ? pourquoi changer le résultat ?
25 sept. 2009 à 11:53
Form=C:\Program Files\Microsoft Visual Studio\VB98\Jeu.frm
24 sept. 2009 à 21:04
Puisque tu veux des conseils, j'ai quelques remarques à faire sur ton code :
"Dim v, i, valeur"
Évite de déclarer des variables sans nom de type, aussi non ta variable sera déclarée par défaut comme Variant et ça peut devenir très gourmand. En plus tu perds en lisibilité ... Choisis aussi des noms de variables plus clairs.
"Oui.Enabled -1: Non.Enabled -1: Nouveau.Enabled = -1"
Ici il y deux choses, d'abord la conversion implicite de Integer en Boolean et ensuite la juxtaposition des lignes avec ":". Crois-moi c'est deux habitudes à bannir immédiatement =) En gros écris directement True ou False ou convertis explicitement tes types avec un cast. Ici CBool(-1) par exemple.
Voilà, bonne continuation =)
Simon