jeu

jeu - VB/VBA/VBS - Programmation

Marsh Posté le 27-01-2009 à 17:55:56    

Bonjour, je rencontre quelques problèmes dans mon programme car quelques lignes de codes ne semble pas être juste. J'essaye de rendre invisible mon bouton JOUER tant que toutes les couleurs du jeu ne sont pas toutes trouvés. Aussi je n'arrive pas à rendre visible le tableau1 (gris) quand j'appuie sur le bouton JOUER (c'est à dire réinitialiser le jeu). Merci pour vôtre aidehttp://forum-images.hardware.fr/icones/message/icon7.gif.
 
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
Dim couleur As Boolean = True
 
 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Size = New Size(850, 700)
Me.StartPosition = FormStartPosition.CenterScreen
 
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))
 
tableau1(i, j).Tag = i.ToString + ";" + j.ToString
 
AddHandler tableau1(i, j).Click, AddressOf tableau_Click
 
tableau1(i, j).Top = i * 100
tableau1(i, j).Left = j * 100
tableau1(i, j).Width = 90
tableau1(i, j).Height = 90
tableau1(i, j).BackColor = Color.Gray
Next
Next
 
For i As Integer = 0 To 5
For j As Integer = 0 To 5
 
tableau2(i, j) = New Button
 
tableau2(i, j).Visible = True
Me.Controls.Add(tableau2(i, j))
 
tableau2(i, j).Top = i * 100
tableau2(i, j).Left = j * 100
tableau2(i, j).Width = 90
tableau2(i, j).Height = 90
 
 
Next
Next
tableau2(0, 0).BackColor = Color.Yellow
tableau2(0, 1).BackColor = Color.Yellow
tableau2(0, 2).BackColor = Color.Blue
tableau2(0, 3).BackColor = Color.Blue
tableau2(0, 4).BackColor = Color.Red
tableau2(0, 5).BackColor = Color.Red
tableau2(1, 0).BackColor = Color.White
tableau2(1, 1).BackColor = Color.White
tableau2(1, 2).BackColor = Color.Black
tableau2(1, 3).BackColor = Color.Black
tableau2(1, 4).BackColor = Color.DarkMagenta
tableau2(1, 5).BackColor = Color.DarkMagenta
tableau2(2, 0).BackColor = Color.Maroon
tableau2(2, 1).BackColor = Color.Maroon
tableau2(2, 2).BackColor = Color.Orange
tableau2(2, 3).BackColor = Color.Orange
tableau2(2, 4).BackColor = Color.Cyan
tableau2(2, 5).BackColor = Color.Cyan
tableau2(3, 0).BackColor = Color.Green
tableau2(3, 1).BackColor = Color.Green
tableau2(3, 2).BackColor = Color.HotPink
tableau2(3, 3).BackColor = Color.HotPink
tableau2(3, 4).BackColor = Color.DarkKhaki
tableau2(3, 5).BackColor = Color.DarkKhaki
tableau2(4, 0).BackColor = Color.Violet
tableau2(4, 1).BackColor = Color.Violet
tableau2(4, 2).BackColor = Color.DarkGray
tableau2(4, 3).BackColor = Color.DarkGray
tableau2(4, 4).BackColor = Color.DarkRed
tableau2(4, 5).BackColor = Color.DarkRed
tableau2(5, 0).BackColor = Color.Honeydew
tableau2(5, 1).BackColor = Color.Honeydew
tableau2(5, 2).BackColor = Color.DeepSkyBlue
tableau2(5, 3).BackColor = Color.DeepSkyBlue
tableau2(5, 4).BackColor = Color.Fuchsia
tableau2(5, 5).BackColor = Color.Fuchsia
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
JOUER.Visible = False
If couleur = True Then
JOUER.Visible = True
End If
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
 
 
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 = 0 To 5
For nb2 As Integer = 0 To 5
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(500)
 
' 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 To 5
For nb2 As Integer = 0 To 5
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 = 0 To 3
For nb2 As Integer = 0 To 3
If tableau1(nb1, nb2).Visible = True Then
couleur = False
End If
Next
Next
 
If couleur = 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
 
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
 
Next
Next
If couleur = True Then
tableau2(i, j).Visible = False
End If
End Sub
End Class

Reply

Marsh Posté le 27-01-2009 à 17:55:56   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed