Bonsoir à tous,


Je dois programmer le jeu othello en utilisant le langage Visual Basic. Mon niveau n'est pas particulièrement exceptionnel mais je maîtrise plutôt bien les conditionnel et les boucles (For...next, do...while, loop...until).

J'ai déjà fait:
- Les déclarations de base.
- La gestion des tours de jeu (joueur 1 ou joueur 2).
- Recherche de case possible à jouer.


J'ai déjà cherché des exemples sur internet mais ces derniers étaient un peu trop élaboré et j'ai eu quelques problèmes de compréhension.


Je bloque un peu sur un élément essentiel de ce jeu: la gestion des pions à retourner (prenant la couleur adverse) après chaque tour.
Merci de m’apporter un peu d’aide


Voilà mon code:
(Pas de moqueries please


LES DECLARATIONS:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
Option Explicit
Const LargueurCote = 8
'Largueur des cotés de l'othellier
 
TableauEtatCase(1 To LargueurCote, 1 To LargueurCote) As String
'Tableau non visible par l'utilisateur indiquant les cases vides et non vides ainsi que la couleur du pion présent
 
Dim NumJoueur As Boolean
'Booléen gérant les joueurs(Faux = au tour du joueur 1)
TOUR DE JEU:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Sub TourJoueur()
 
'Gestion des tours de jeu
If NumJoueur = False Then
	NumJoueur = True
 
	Else
	NumJoueur = False
 
End If
 
End Sub
INITIALISATION DE L'OTHELLIER:
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
Private Sub Form_Load()
 
 
'Initialisation de l'othellier
Dim i As Integer
Dim j As Integer
 
NumJoueur = False
 
For i = 1 To LargueurCote
	For j = 1 To LargueurCote
		TableauEtatCase(i, j) = "vide"
	Next j
Next i
 
TableauEtatCase(4, 5) = "noir"
TableauEtatCase(5, 4) = "noir"
TableauEtatCase(4, 4) = "blanc"
TableauEtatCase(5, 5) = "blanc"
 
 
 
End Sub
DEBUT DE LA PARTIE:
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
Private Sub Command2_Click()
 
 
'Début du jeu
Do
 
abcisse = Input("Quelle est l'abcisse de la case à jouer ?", Saisie)
ordonne = Input("Quelle est l'ordonnée de la case à jouer ?", Saisie)
 
If ((abcisse >= 1) And (abcisse <= 8) And (ordonnee >= 1) And (ordonnee <= 8) And (TableauEtatCase(abcisse, ordonne) = "vide") And (adjacent(abcisse, ordonnee) = True)) Then
 
 
 
'.....la suite prochainement
 
 
End Sub
RECHERCHE D'UN PION ADVERSE ADJACENT:
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
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
 
Function adjacent(i As Integer, j As Integer) As Boolean
 
adjacent(i, j) = False
 
'Recherche d'un pion adjacent de couleur adverse
 
'Côté gauche
If ((NumJoueur = False) And (i = 1) And (j > 1) And (j < 8)) And ((TableauEtatCase(i, j - 1) = "blanc") Or (TableauEtatCase(i, j + 1) = "blanc") Or (TableauEtatCase(i + 1, j) = "blanc") Or (TableauEtatCase(i + 1, j - 1) = "blanc") Or (TableauEtatCase(i + 1, j + 1) = "blanc")) Then
	adjacent(i, j) = True
 
	'Côté droit
	ElseIf ((NumJoueur = False) And (i = 8) And (j > 1) And (j < 8)) And ((TableauEtatCase(i, j - 1) = "blanc") Or (TableauEtatCase(i, j + 1) = "blanc") Or (TableauEtatCase(i - 1, j) = "blanc") Or (TableauEtatCase(i - 1, j - 1) = "blanc") Or (TableauEtatCase(i - 1, j + 1) = "blanc")) Then
		adjacent(i, j) = True
 
	'Haut
	ElseIf ((NumJoueur = False) And (j = 1) And (i > 1) And (i < 8)) And ((TableauEtatCase(i - 1, j) = "blanc") Or (TableauEtatCase(i + 1, j) = "blanc") Or (TableauEtatCase(i, j + 1) = "blanc") Or (TableauEtatCase(i - 1, j + 1) = "blanc") Or (TableauEtatCase(i + 1, j + 1) = "blanc")) Then
		adjacent(i, j) = True
 
	'Bas
	ElseIf ((NumJoueur = False) And (j = 8) And (i > 1) And (i < 8)) And ((TableauEtatCase(i - 1, j) = "blanc") Or (TableauEtatCase(i + 1, j) = "blanc") Or (TableauEtatCase(i, j - 1) = "blanc") Or (TableauEtatCase(i - 1, j - 1) = "blanc") Or (TableauEtatCase(i + 1, j - 1) = "blanc")) Then
		adjacent(i, j) = True
 
	'Coin haut gauche
	ElseIf ((NumJoueur = False) And (i = 1) And (j = 1)) And ((TableauEtatCase(2, 1) = "blanc") Or (TableauEtatCase(1, 2) = "blanc") Or (TableauEtatCase(2, 2) = "blanc")) Then
		adjacent(i, j) = True
 
	'Coin haut droit
	ElseIf ((NumJoueur = False) And (i = 8) And (j = 1)) And ((TableauEtatCase(7, 1) = "blanc") Or (TableauEtatCase(8, 2) = "blanc") Or (TableauEtatCase(7, 2) = "blanc")) Then
		adjacent(i, j) = True
 
	'Coin bas gauche
	ElseIf ((NumJoueur = False) And (i = 1) And (j = 8)) And ((TableauEtatCase(1, 7) = "blanc") Or (TableauEtatCase(2, 8) = "blanc") Or (TableauEtatCase(2, 7) = "blanc")) Then
		adjacent(i, j) = True
 
	'Coin bas droit
	ElseIf ((NumJoueur = False) And (i = 8) And (j = 8)) And ((TableauEtatCase(8, 7) = "blanc") Or (TableauEtatCase(7, 8) = "blanc") Or (TableauEtatCase(7, 7) = "blanc")) Then
		adjacent(i, j) = True
 
	'Reste de l'othellier
	ElseIf ((NumJoueur = False) And (i > 1) And (i < 8) And (j > 1) And (j < 8)) And ((TableauEtatCase(i - 1, j) = "blanc") Or (TableauEtatCase(i + 1, j) = "blanc") Or (TableauEtatCase(i, j - 1) = "blanc") Or (TableauEtatCase(i, j + 1) = "blanc") Or (TableauEtatCase(i - 1, j - 1) = "blanc") Or (TableauEtatCase(i + 1, j - 1) = "blanc") Or (TableauEtatCase(i - 1, j + 1) = "blanc") Or (TableauEtatCase(i + 1, j + 1) = "blanc")) Then
		adjacent(i, j) = True
 
End If
 
 
'Côté gauche
If ((NumJoueur = True) And (i = 1) And (j > 1) And (j < 8)) And ((TableauEtatCase(i, j - 1) = "noir") Or (TableauEtatCase(i, j + 1) = "blanc") Or (TableauEtatCase(i + 1, j) = "noir") Or (TableauEtatCase(i + 1, j - 1) = "noir") Or (TableauEtatCase(i + 1, j + 1) = "noir")) Then
	adjacent(i, j) = True
 
	'Côté droit
	ElseIf ((NumJoueur = True) And (i = 8) And (j > 1) And (j < 8)) And ((TableauEtatCase(i, j - 1) = "noir") Or (TableauEtatCase(i, j + 1) = "noir") Or (TableauEtatCase(i - 1, j) = "noir") Or (TableauEtatCase(i - 1, j - 1) = "noir") Or (TableauEtatCase(i - 1, j + 1) = "noir")) Then
		adjacent(i, j) = True
 
	'Haut
	ElseIf ((NumJoueur = True) And (j = 1) And (i > 1) And (i < 8)) And ((TableauEtatCase(i - 1, j) = "noir") Or (TableauEtatCase(i + 1, j) = "noir") Or (TableauEtatCase(i, j + 1) = "noir") Or (TableauEtatCase(i - 1, j + 1) = "noir") Or (TableauEtatCase(i + 1, j + 1) = "noir")) Then
		adjacent(i, j) = True
 
	'Bas
	ElseIf ((NumJoueur = True) And (j = 8) And (i > 1) And (i < 8)) And ((TableauEtatCase(i - 1, j) = "noir") Or (TableauEtatCase(i + 1, j) = "noir") Or (TableauEtatCase(i, j - 1) = "noir") Or (TableauEtatCase(i - 1, j - 1) = "noir") Or (TableauEtatCase(i + 1, j - 1) = "noir")) Then
		adjacent(i, j) = True
 
	'Coin haut gauche
	ElseIf ((NumJoueur = True) And (i = 1) And (j = 1)) And ((TableauEtatCase(2, 1) = "noir") Or (TableauEtatCase(1, 2) = "noir") Or (TableauEtatCase(2, 2) = "noir")) Then
		adjacent(i, j) = True
 
	'Coin haut droit
	ElseIf ((NumJoueur = True) And (i = 8) And (j = 1)) And ((TableauEtatCase(7, 1) = "noir") Or (TableauEtatCase(8, 2) = "noir") Or (TableauEtatCase(7, 2) = "noir")) Then
		adjacent(i, j) = True
 
	'Coin bas gauche
	ElseIf ((NumJoueur = True) And (i = 1) And (j = 8)) And ((TableauEtatCase(1, 7) = "noir") Or (TableauEtatCase(2, 8) = "noir") Or (TableauEtatCase(2, 7) = "noir")) Then
		adjacent(i, j) = True
 
	'Coin bas droit
	ElseIf ((NumJoueur = True) And (i = 8) And (j = 8)) And ((TableauEtatCase(8, 7) = "noir") Or (TableauEtatCase(7, 8) = "noir") Or (TableauEtatCase(7, 7) = "noir")) Then
		adjacent(i, j) = True
 
 
	'Reste de l'othellier
	ElseIf ((NumJoueur = True) And (i > 1) And (i < 8) And (j > 1) And (j < 8)) And ((TableauEtatCase(i - 1, j) = "noir") Or (TableauEtatCase(i + 1, j) = "noir") Or (TableauEtatCase(i, j - 1) = "noir") Or (TableauEtatCase(i, j + 1) = "noir") Or (TableauEtatCase(i - 1, j - 1) = "noir") Or (TableauEtatCase(i + 1, j - 1) = "noir") Or (TableauEtatCase(i - 1, j + 1) = "noir") Or (TableauEtatCase(i + 1, j + 1) = "noir")) Then
		adjacent(i, j) = True
 
End If
 
End Function