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 : 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
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
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?