JEU MÉDIUM2

The Meteorologist
Messages postés
233
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
3 novembre 2011
- 24 sept. 2009 à 21:04
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 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.

https://codes-sources.commentcamarche.net/source/50604-jeu-medium2

Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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és
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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és
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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és
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
25 sept. 2009 à 11:53
ton .VBP est pourri (chemin en dur):

Form=C:\Program Files\Microsoft Visual Studio\VB98\Jeu.frm
The Meteorologist
Messages postés
233
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
3 novembre 2011
1
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.

Voilà, bonne continuation =)
Simon