aide programmation jeu de mémoire - VB/VBA/VBS - Programmation
MarshPosté le 07-01-2009 à 19:11:25
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..
j'ai un message d'erreur lié aux variables, mon code vous 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 à la fin du prog à la ligne If tableau(i, j).BackColor = Color.DarkGray Then
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" )
If tableau(i, j).BackColor = Color.DarkGray Then
tableau(i, j).Visible = False End If
End Sub
End Class
Message édité par bendri00 le 07-01-2009 à 19:12:59
Marsh Posté le 07-01-2009 à 19:11:25
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..
j'ai un message d'erreur lié aux variables, mon code vous 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 à la fin du prog à la ligne
If tableau(i, j).BackColor = Color.DarkGray Then
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))
tableau(i, j).Tag = i.ToString + ";" + j.ToString
AddHandler tableau(i, j).Click, AddressOf tableau_Click
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
Dim vraitableau(3, 3) As Button
For i As Integer = 0 To 3
For j As Integer = 0 To 3
vraitableau(i, j) = New Button
vraitableau(i, j).Visible = True
Me.Controls.Add(vraitableau(i, j))
vraitableau(i, j).Top = i * 100
vraitableau(i, j).Left = j * 100
vraitableau(i, j).Width = 90
vraitableau(i, j).Height = 90
Next
Next
vraitableau(0, 0).BackColor = Color.Yellow
vraitableau(0, 1).BackColor = Color.Yellow
vraitableau(0, 2).BackColor = Color.DarkBlue
vraitableau(0, 3).BackColor = Color.DarkBlue
vraitableau(1, 0).BackColor = Color.DarkMagenta
vraitableau(1, 1).BackColor = Color.DarkMagenta
vraitableau(1, 2).BackColor = Color.Indigo
vraitableau(1, 3).BackColor = Color.Indigo
vraitableau(2, 0).BackColor = Color.Maroon
vraitableau(2, 1).BackColor = Color.Maroon
vraitableau(2, 2).BackColor = Color.Orange
vraitableau(2, 3).BackColor = Color.Orange
vraitableau(3, 0).BackColor = Color.Black
vraitableau(3, 1).BackColor = Color.Black
vraitableau(3, 2).BackColor = Color.Turquoise
vraitableau(3, 3).BackColor = Color.Turquoise
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" )
If tableau(i, j).BackColor = Color.DarkGray Then
tableau(i, j).Visible = False
End If
End Sub
End Class
Message édité par bendri00 le 07-01-2009 à 19:12:59