Problème de comparaison avec "sender"
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 :
Code:
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 |
Voilà pour ce qui est du plateau de jeu
Code:
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 |
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?