bendri00
Messages postés16Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention27 décembre 2013
-
7 janv. 2009 à 13:11
NHenry
Messages postés15102Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention27 mars 2024
-
7 janv. 2009 à 21:52
Bonjour à tous, je bloque en essayant de créer un petit programme de jeu de mémoire, j'ai regardé les programmes présent en ligne et ils sont tous très compliqués je trouve. Je serai très reconnaissant à qui voudra bien m'aider, je suis débutant, merci d'avance :
Le but est de faire un jeu de mémoire, pour cela j'ai créé deux tableaux de 16 boutons.
Le premier s'appel tableau et affiche des boutons gris.
Le deuxième s'appel vraitableau et affiche des boutons de couleurs allant par paire, que je mélange dès le chargement du programme.
Je souhaiterai pouvoir supperposer mes 2 tableaux pour que lorsqu'on clique sur un boutton de tableau, celui-ci change de couleur et devienne transparent pour laisser apparaitre un bouton de vraitableau situé en dessous.
Seulement voilà quand je rends visible chacun des tableaux séparément, je vois qu'ils marchent, mais quand je clik sur une case de tableau pour la rendre transparente et voir la case en dessous, ça marche pas..
Le code :
Public Class Colors
Inherits System.Windows.Forms.Form
Dim tableau(3, 3) As Button
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
Dim vraitableau(3, 3) As Button
Private Sub Colors_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Size = New Size(500, 500)
'je crée tableau (boutons gris)
Dim tableau(3, 3) As Button
For i As Integer = 0 To 3
For j As Integer = 0 To 3
tableau(i, j) = New Button
tableau(i, j).Visible = True
Me.Controls.Add(tableau(i, j))
For i As Integer = 0 To 3
For j As Integer = 0 To 3
Randomize()
Dim value1 As Integer = CInt(Int((4 * Rnd())))
Dim value2 As Integer = CInt(Int((4 * Rnd())))
Dim button1 As Color = vraitableau(i, j).BackColor
vraitableau(i, j).BackColor = vraitableau(value1, value2).BackColor
vraitableau(value1, value2).BackColor = button1
Next
Next
End Sub
'code pour gérer un click sur tableau (lieu du problème)
Private Sub tableau_Click(ByVal sender As System.Object, ByVal e As System.EventArgs(i)
Dim coord() As String
Dim k, l As Integer
coord = Split(sender.tag, ";")
Debug.WriteLine("Touche activée")
tableau(k, l).BackColor = Color.Transparent
End Sub
bendri00
Messages postés16Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention27 décembre 2013 7 janv. 2009 à 18:44
merci de ta réponse fauve, je l'ai envisagé et fait mais j'ai un message d'erreur lié aux variables, mon code te semble t'il bon ? parce que je ne sais pas comment faire pour remédier à cette erreur ..
message d'erreur : l'exception nullreferenceexception n'a pas été gérée
bendri00
Messages postés16Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention27 décembre 2013 7 janv. 2009 à 18:51
oui et tout d'abord merci encore à toi de m'aider, je te recopie le code que j'ai sous les yeux :
Public Class Colors
Inherits System.Windows.Forms.Form
Dim tableau(3, 3) As Button
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
Dim vraitableau(3, 3) As Button
Private Sub Colors_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Size = New Size(500, 500)
Dim tableau(3, 3) As Button
For i As Integer = 0 To 3
For j As Integer = 0 To 3
tableau(i, j) = New Button
tableau(i, j).Visible = True
Me.Controls.Add(tableau(i, j))
For i As Integer = 0 To 3
For j As Integer = 0 To 3
Randomize()
Dim value1 As Integer = CInt(Int((4 * Rnd())))
Dim value2 As Integer = CInt(Int((4 * Rnd())))
Dim button1 As Color = vraitableau(i, j).BackColor
vraitableau(i, j).BackColor = vraitableau(value1, value2).BackColor
vraitableau(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
Dim i, j As Integer
coord = Split(sender.tag, ";")
i = CType(coord(0), Integer)
j = CType(coord(1), Integer)
'Debug.WriteLine("Touche activée")
l'erreur s'affiche pour la ligne qui suit lorsque je clique sur un bouton de mon tableau gris (copie le code si tu peux et lance le) :
If tableau(i, j).BackColor = Color.DarkGray Then
tableau(i, j).Visible = False
End If
End Sub
End Class
Vous n’avez pas trouvé la réponse que vous recherchez ?
tableau(i, j).Top = i * 100
tableau(i, j).Left = j * 100
tableau(i, j).Width = 90
tableau(i, j).Height = 90
tableau(i, j).BackColor = Color.DarkGray
Next
Next
<hr size="2" width="100%" />
Tout ce que tu as fait ci-dessus, n'aura servi à rien car
une fois que tu vas quitter Colors_Load, tableau ne va plus exister.
Donc quand tu modifies BackColor dans tableau_click, c'est la variable tableau que tu as déclaré après Public Class Colors que tu tentes d'accéder.
Mais c'est pas dans cette variable que tu as rajouté tes boutons mais celle de Colors_Load qui n'existe plus à ce stade, d'où l'erreur que tu obtiens.
La solution est très simple tu enlèves la ligne de code ci-dessous qui se trouve dans Colors_Load :