Bonjour à tous.
Tout d'abord, je précise que je "programme" sous visual basic .NET version 7.1.3088.
Voilà, je me lance dans un petit jeu (un othello), avec des graphismes vraiment minimalistes, et je bloque. Voici mon code pour l'instant :
Voilà pour ce qui est du plateau de jeu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 Dim MesCases As New Collection Dim nblignes, nbcolonnes As Byte Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load nblignes = 8 nbcolonnes = 8 'suppression des membres précédents de la collection Mescases Dim i As Integer For i = 1 To MesCases.Count MesCases(i).dispose() Next i 'Disposition des boutons For i = 0 To nblignes * nbcolonnes - 1 Dim b As New Button b.Name = "Button" & i b.BackColor() = BackColor.Green MesCases.Add(b) Controls.Add(b) AddHandler b.Click, AddressOf Damierclick b.Height = 40 b.Width = 40 b.Left = 40 + 40 * (i Mod nbcolonnes) b.Top = 40 + 40 * (i \ nbcolonnes) If b.Name = "Button27" Then b.BackColor() = BackColor.Black ElseIf b.Name = "Button36" Then b.BackColor() = BackColor.Black ElseIf b.Name = "Button28" Then b.BackColor() = BackColor.White ElseIf b.Name = "Button35" Then b.BackColor() = BackColor.White End If Next i End Sub
Et voilà la suite qui permet de cliquer sur un bouton du damier! J'ai mis en gras le point sur lequel je bute. Mon problème est, pour le moment, d'arriver à faire savoir au programme si le bouton est vert (pas encore cliqué) et ainsi le faire devenir blanc ou noir. Mais cela ne semble pas possible avec "sender", donc comment faire?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Private Sub Damierclick(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim i As Integer ' comparaison pour savoir si le bouton est déjà cliqué If sender.BackColor = BackColor.Green Then sender.BackColor() = BackColor.White End If ' on identifie l'index de la case cliquée Dim ind As Integer = 1 While sender.name <> MesCases(ind).name ind = ind + 1 End While ' on reconstitue les lignes et les colonnes d'après ind Dim lig, col As Integer lig = Int((ind - 1) / nbcolonnes) + 1 col = ((ind - 1) Mod nbcolonnes) + 1 Me.Text = "case n°" & ind & " - Ligne " & lig & " , colonne " & col End Sub
Partager