Lucyberad
Messages postés414Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention26 juillet 20073 3 nov. 2005 à 22:25
c marrant y'as pas longtemps j'ai fait la version ti-89 (calculette) durant les cours ^^
sinon il est ou le maitre du temps? :P
allez c un bon debut, et tout le monde commence par ca (apres hello world) ^^
bonne prog
Lucyberad
JoePatent
Messages postés171Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention20 juillet 2008 2 nov. 2005 à 18:01
Tu économiserais enormément de code en utilisant Image(1), ... Image(21)
Tu auras du plaisir à reconvertir en vb.net.
Les deux méthode se valent.
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 2 nov. 2005 à 11:38
Testé sans problème chez moi.
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 200627 2 nov. 2005 à 09:05
OK,
Merci Econs, je vais copier ton code et l'essayer.
Des explications comme celle-ci sont toujours instructives.
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 2 nov. 2005 à 08:53
Je me suis permis de réécrire tout çà avec des groupes de contrôles pour que tu voies la différence.
Les boucles sont plus claires, on n'utilise plus d'objet de type Object (qui alourdissent l'exécution), plus de contrôle sur la totalité des contrôles de la feuille, ...
Note : pour l'exécuter, il faut placer des images d'allumettes de nom 'MonImage' avec des indices allant de 1 à 21.
Et des commandButtons de nom cmd avec des indices allant de 1 à 3.
Enjoy,
============== frmAllumettes ===================
Option Explicit
Private Sub cmd_click(Index As Integer)
ModAllumettes.Mask (Index)
disableControls
Joueur
End Sub
Private Sub disableControls()
Dim ll As Long
For ll = 1 To 3
If ModAllumettes.CountVisible < ll Then
cmd(ll).Enabled = False
End If
Next ll
End Sub
Private Sub Joueur()
If Label2.Caption = "Joueur 1" Then
Label2.Caption = "Joueur 2"
Else
Label2.Caption = "Joueur 1"
End If
If CountVisible < 1 Then
Label3.Caption = "Vous avez gagné !"
End If
End Sub
Private Sub mnuClose_Click()
Unload Me
End Sub
Private Sub mnuNouveau_Click()
Dim l As Long
For l = 1 To 21
MonImage(l).Visible = True
Next l
For l = 1 To 3
cmd(l).Visible = True
Next l
End Sub
== modAllumettes.bas ===============
Option Explicit
Function CountVisible() As Long
Dim iCount As Long
Dim l As Long
iCount = 0
For l = 21 To 1 Step -1
If frmAllumettes.MonImage(l).Visible Then
iCount = l
Exit For
End If
Next l
CountVisible = iCount
End Function
Sub Mask(iNumber As Integer)
Dim nbVisible As Long
Dim ll As Integer
nbVisible = CountVisible
For ll = 1 To iNumber
frmAllumettes.MonImage(nbVisible - ll + 1).Visible = False
Next ll
End Sub
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 2 nov. 2005 à 08:28
Quitte à transformer le code pour VB6, autant utiliser les fonctionnalités que VB6 possède et pas VBA, comme par exemple les groupes de contrôles.
Image1, Image2, ... Image20, Image21 => Ca fait beaucoup de contrôles à gérer.
Tu économiserais enormément de code en utilisant Image(1), ... Image(21)
3 nov. 2005 à 22:25
sinon il est ou le maitre du temps? :P
allez c un bon debut, et tout le monde commence par ca (apres hello world) ^^
bonne prog
Lucyberad
2 nov. 2005 à 18:01
Tu auras du plaisir à reconvertir en vb.net.
Les deux méthode se valent.
2 nov. 2005 à 11:38
2 nov. 2005 à 09:05
Merci Econs, je vais copier ton code et l'essayer.
Des explications comme celle-ci sont toujours instructives.
2 nov. 2005 à 08:53
Les boucles sont plus claires, on n'utilise plus d'objet de type Object (qui alourdissent l'exécution), plus de contrôle sur la totalité des contrôles de la feuille, ...
Note : pour l'exécuter, il faut placer des images d'allumettes de nom 'MonImage' avec des indices allant de 1 à 21.
Et des commandButtons de nom cmd avec des indices allant de 1 à 3.
Enjoy,
============== frmAllumettes ===================
Option Explicit
Private Sub cmd_click(Index As Integer)
ModAllumettes.Mask (Index)
disableControls
Joueur
End Sub
Private Sub disableControls()
Dim ll As Long
For ll = 1 To 3
If ModAllumettes.CountVisible < ll Then
cmd(ll).Enabled = False
End If
Next ll
End Sub
Private Sub Joueur()
If Label2.Caption = "Joueur 1" Then
Label2.Caption = "Joueur 2"
Else
Label2.Caption = "Joueur 1"
End If
If CountVisible < 1 Then
Label3.Caption = "Vous avez gagné !"
End If
End Sub
Private Sub mnuClose_Click()
Unload Me
End Sub
Private Sub mnuNouveau_Click()
Dim l As Long
For l = 1 To 21
MonImage(l).Visible = True
Next l
For l = 1 To 3
cmd(l).Visible = True
Next l
End Sub
== modAllumettes.bas ===============
Option Explicit
Function CountVisible() As Long
Dim iCount As Long
Dim l As Long
iCount = 0
For l = 21 To 1 Step -1
If frmAllumettes.MonImage(l).Visible Then
iCount = l
Exit For
End If
Next l
CountVisible = iCount
End Function
Sub Mask(iNumber As Integer)
Dim nbVisible As Long
Dim ll As Integer
nbVisible = CountVisible
For ll = 1 To iNumber
frmAllumettes.MonImage(nbVisible - ll + 1).Visible = False
Next ll
End Sub
2 nov. 2005 à 08:28
Image1, Image2, ... Image20, Image21 => Ca fait beaucoup de contrôles à gérer.
Tu économiserais enormément de code en utilisant Image(1), ... Image(21)