hichem94120
Messages postés4Date d'inscriptionlundi 3 novembre 2008StatutMembreDernière intervention13 janvier 2009
-
11 janv. 2009 à 00:25
hichem94120
Messages postés4Date d'inscriptionlundi 3 novembre 2008StatutMembreDernière intervention13 janvier 2009
-
13 janv. 2009 à 22:52
Bonjour à tous,
Voila je suis débutant et j'ai entrepris de réaliser un jeu de mémoire. Mon problème et d'écrire un algorithme qui contrôlera les cases des tableaux:
il faudrait que lorsque je clique une première fois, puis une seconde fois et que quand les deux cases soit de la même couleurs , ces deux cases restent activent et quand les couleurs ne sont pas pareils que les cases se désactives. Après plusieurs jours de recherchent je n'arrive pas à avancer.
Merci à vous.
Public Class Form1
Dim tableau1(5, 5) As Button
Dim tableau2(5, 5) As Button
Dim i As Integer
Dim j As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Size = New Size(700, 600)
For i As Integer = 0 To 5
For j As Integer = 0 To 5
tableau1(i, j) = New Button
tableau1(i, j).Visible = True
Me.Controls.Add(tableau1(i, j))
For i As Integer = 0 To 5
For j As Integer = 0 To 5
Randomize()
Dim value1 As Integer = CInt(Int((6 * Rnd())))
Dim value2 As Integer = CInt(Int((6 * Rnd())))
Dim button1 As Color = tableau2(i, j).BackColor
tableau2(i, j).BackColor = tableau2(value1, value2).BackColor
tableau2(value1, value2).BackColor = button1
Next
Next
End Sub
Private Sub tableau_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim coord() As String
coord = Split(sender.tag, ";")
i = CType(coord(0), Integer)
j = CType(coord(1), Integer)
'Debug.WriteLine("Touche activée" )
If tableau1(i, j).BackColor.Equals(Color.Transparent) Then
tableau1(i, j).Visible = False
End If
End Sub
Private Sub JOUER_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles JOUER.Click
For i As Integer = 0 To 5
For j As Integer = 0 To 5
Randomize()
Dim value1 As Integer = CInt(Int((6 * Rnd())))
Dim value2 As Integer = CInt(Int((6 * Rnd())))
Dim button1 As Color = tableau2(i, j).BackColor
tableau2(i, j).BackColor = tableau2(value1, value2).BackColor
tableau2(value1, value2).BackColor = button1
cs_fauve
Messages postés661Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention23 mars 20118 13 janv. 2009 à 22:33
Salut,
Tiens, tiens, ce petit jeu me rappelle quelque chose, il y a un autre membre qui a exactement le même code que toi alors je vais faire simple : je te file la class Form1 en entier et tu la remplace la tienne par la mienne (j'ai bien commenté et ça fonctionne du tonnerre) :
Public Class Form1
Inherits System.Windows.Forms.Form
Dim tableau1(5, 5) As Button
Dim tableau2(5, 5) As Button
Dim i, j, k, l As Integer Dim ibouton1, jbouton1, ibouton2, jbouton2 As Integer Dim clicbouton2 As Boolean = False
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Size = New Size(700, 700)
Me.StartPosition = FormStartPosition.CenterScreen
For i As Integer = 0To5 For j As Integer = 0 To5 tableau1(i, j) = New Button
tableau1(i, j).Visible = True
Me.Controls.Add(tableau1(i, j))
For i As Integer = 0 To5 For j As Integer = 0To5 Randomize()
Dim value1 As Integer = CInt (Int((6 * Rnd())))
Dim value2 As Integer = CInt(Int((6 * Rnd())))
Dim button1 As Color = tableau2(i, j).BackColor
tableau2(i, j).BackColor = tableau2(value1, value2).BackColor
tableau2(value1, value2).BackColor = button1
Next
Next End Sub
Private Sub tableau_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim coord() As String ' Variable que restera à True si toutes
' les couleurs ont été trouvées
Dim colorsfound As Boolean = True
coord = Split(sender.tag, ";" )
' Si c'est le premier bouton qu'on clic
If clicbouton2 = False Then ' On récupère les coordonnées
ibouton1 = CInt (coord(0))
jbouton1 = CInt(coord(1))
' On rend invisible le bouton gris
tableau1(ibouton1, jbouton1).Visible = False
' On met cette variable à True pour dire que le
' prochain clic sera celui du 2° bouton
clicbouton2 = True
' C'est le clic sur le deuxième bouton
ElseIf clicbouton2 = True Then
' Avec les 2 boucles For, on désactive
' le clic sur un autre bouton jusqu'à ce
' que les boutons soit vérifiés et correct
' soit qu'ils sont pas correct et remis en
' gris
For nb1 As Integer = 0To5 For nb2 As Integer = 0 To5 tableau1(nb1, nb2).Enabled = False Next Next ' On récupère les coordonnées
ibouton2 = CInt (coord(0))
jbouton2 = CInt(coord(1))
' On rend invisible le bouton gris
tableau1(ibouton2, jbouton2).Visible = False
' Si les couleurs entre le 1° bouton cliqué et le 2° bouton sont identiques
If tableau2(ibouton1, jbouton1).BackColor = tableau2(ibouton2, jbouton2).BackColor Then ' On ne fait rien
' On remet juste clicbouton2 à False
' pour dire que le prochain clic sera de
' nouveau le 1° bouton
clicbouton2 = False
Else ' Les couleurs ne sont pas identiques
' Création d'une attente de 2 secondes
hbwait(2000)
' On affiche de nouveau les 2 boutons gris
tableau1(ibouton1, jbouton1).Visible = True tableau1(ibouton2, jbouton2).Visible = True
' On remet juste clicbouton2 à False
' pour dire que le prochain clic sera de
' nouveau le 1° bouton
clicbouton2 = False End If End If
' Avec les 2 boucles For, on réactive
' le clic sur un autre bouton
For nb1 As Integer = 0 To5 For nb2 As Integer = 0To5 tableau1(nb1, nb2).Enabled = True
Next Next
' Avec ces 2 boucles, on teste si toutes les couleurs
' ont été trouvées si ce n'est pas le cas, la variable
' colorsfound passe à False
For nb1 As Integer = 0To3 For nb2 As Integer = 0 To3 If tableau1(nb1, nb2).Visible = True Then colorsfound = False
End If Next Next
' Si colorsfound est à True, celà
' veut dire que plus aucun bouton gris
' n'est visible (on a trouvé toutes les
' couleurs)
If colorsfound = True Then MsgBox( "Félicitation, vous avez gagné !!!" )
End If
End Sub
Friend Sub hbwait(ByVal ms_to_wait As Long)
Dim endwait As Double endwait = Environment.TickCount + ms_to_wait
While Environment.TickCount < endwait
System.Threading.Thread.Sleep(1)
Application.DoEvents()
End While End Sub