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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
| Private Sub PictureBox_Click(ByVal sender As Object, ByVal e As System.EventArgs)
'On teste que la case qui a été choisie correspond à celui qui doit jouer
If sender.tag = tour Then
Dim elementbis As Control
For Each elementbis In Controls
'On remet toutes les cases de l'othellier de la même couleur
If elementbis.Tag <> "" Then
elementbis.BackColor = Color.BlanchedAlmond
End If
Next elementbis
'Tableau des cases à vérifier quand un pion est joué
Dim tab(7) As Integer
' Tableau des cases ou il y a des pions adverses autour du pion joué
Dim autour(0) As Integer
'On réinitialise jouable()
Erase jouable
Dim element As Control
Dim cpt As Integer = 0
Dim i, pas As Integer
Dim pionAdv, pionAdv2 As Boolean
Dim fin As Boolean = False
Dim diff As Integer = 0
'On affecte le tableau des cases à vérifier ( mouvements relatifs par rapport à la case jouée)
tab(0) = -11
tab(1) = -10
tab(2) = -9
tab(3) = -1
tab(4) = 1
tab(5) = 9
tab(6) = 10
tab(7) = 11
'affectation de la valeur de l'index du pion moussé
depart = sender.tabindex
'On boucle pour savoir quelles cases autour du pion choisi sont occupées par un pion adverse
For Each element In Controls
'On teste les cases autour (positions relatives)
For i = 0 To 7
If element.TabIndex = depart + tab(i) Then
'Test s'il y a un pion adverse dans la case
pionAdv = element.Tag <> "v" And element.Tag <> "h" And element.Tag <> tour
If pionAdv = True Then
'On stocke dans un tableau l'index de la case, si elle contient un pion adverse
ReDim Preserve autour(cpt)
autour(cpt) = element.TabIndex
cpt = cpt + 1
End If
End If
Next i
Next element
'On réinitialise la variable cpt
cpt = 0
'On boucle pour savoir quelles cases de l'othellier sont jouables pour le pion choisi
For Each element In Controls
'Test sur les pions adverses adjacents, dont les index sont stockés dans le tableau "autour()"
For i = 0 To UBound(autour)
If element.TabIndex = autour(i) Then
'On stocke le pas entre la case choisie et la case adverse
pas = element.TabIndex - sender.tabindex
pionamod = pas
diff = pas
'On boucle pour savoir combien de pions adverses sont en ligne par rapport à la case jouée
fin = False
While fin <> True
'on boucle pour tester l'index: si la case correspond à celle d'après dans la ligne directionnelle de pions
For Each elementbis In Controls
If elementbis.TabIndex = element.TabIndex + diff Then
pionAdv2 = elementbis.Tag <> "v" And elementbis.Tag <> "h" And elementbis.Tag <> tour
'S'il y a un pion adverse, on augmente le pas pour continuer le test
If pionAdv2 = True Then
diff = diff + pas
'Si la case est vide, cela signifie que la case est jouable: on stocke dans le tableau "jouable()", puis on sort de la boucle
ElseIf elementbis.Tag = "v" Then
ReDim Preserve jouable(cpt)
jouable(cpt) = elementbis.TabIndex
elementbis.BackColor = Color.PaleGoldenrod
AddHandler elementbis.DoubleClick, AddressOf PictureBox_DoubleClick
cpt = cpt + 1
'Sinon, on sort de la boucle
fin = True
Else
fin = True
End If
End If
Next elementbis
End While
End If
Next i
Next element
End If
End Sub |
Partager