-
Notifications
You must be signed in to change notification settings - Fork 0
/
game.py
102 lines (89 loc) · 2.89 KB
/
game.py
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
from pretty_table import PrettyTable
class Jeu:
def __init__(self):
self.j1 : tuple = ("o", "Joueur 1")
self.j2 : tuple = ("x", "Joueur 2")
self.plateau = \
[
[" "," "," "],
[" "," "," "],
[" "," "," "]
]
self.boucle_jeu()
def boucle_jeu(self):
while True:
self.tour = self.j1
self.affichage()
self.jouer()
self.test_resultat()
if self.fin_du_jeu()[0]:break
self.tour = self.j2
self.affichage()
self.jouer()
self.test_resultat()
if self.fin_du_jeu()[0]:break
def jouer(self):
pos = input("Entrez les coordonées séparées par une virgule : ")
pos = pos.split(",")
pos = list(map(int, pos))
pos = [x-1 for x in pos if x > 0]
self.plateau[pos[0]][pos[1]]=self.tour[0]
def fin_du_jeu(self) -> tuple:
plateau = self.plateau
resultat = (False, 0) # égalité par défaut
# 1 -> victoire
# 0 -> égalité
# horizontale
for i in range(0,3):
compteur = 0
for j in range(0,3):
if plateau[i][j] == self.tour[0]:
compteur += 1
if compteur == 3:
resultat = (True, 1)
#verticale
for i in range(0,3):
compteur = 0
for j in range(0,3):
if plateau[j][i] == self.tour[0]:
compteur += 1
if compteur == 3:
resultat = (True, 1)
#diagonale 1
compteur = 0
for i in range(0,3):
if plateau[i][i] == self.tour[0]:
compteur += 1
if compteur == 3:
resultat = (True, 1)
#diagonale 2
compteur = 0
for i in range(0,3):
if plateau[2-i][i] == self.tour[0]:
compteur += 1
if compteur == 3:
resultat = (True, 1)
#égalité
compteur = 0
for i in range(3):
for j in range(3):
if plateau[i][j] != " ":
compteur += 1
if compteur == 9 and resultat[0] is False:
resultat = (True, 0)
return resultat
def test_resultat(self):
fdj = self.fin_du_jeu()
if fdj[0]:
if fdj[1] == 1:
self.affichage()
print(f"Le gagnant est le {self.tour[1]}")
elif fdj[1] == 0:
self.affichage()
print("Egalité entre les deux joueurs")
def affichage(self):
print(f"Tour du {self.tour[1]} => {self.tour[0]}")
plateau = PrettyTable(self.plateau)
if __name__ == '__main__':
instance = Jeu
instance()