-
Notifications
You must be signed in to change notification settings - Fork 0
/
StratGraphe.py
61 lines (58 loc) · 1.95 KB
/
StratGraphe.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
from game import *
def calculer_strategie():
dico = dict()
def aux(etat):
if etat not in dico:
if est_terminal(etat):
dico[etat] = (est_gagnant(etat),None)
return
categories = [0, 0, 0]
coups_prochains={0:None, 1:None, 2:None}
for coup in coups_possibles(etat):
etat_suivant = jouer_coup(etat, coup)
aux(etat_suivant)
categories[dico[etat_suivant][0]] += 1
coups_prochains[dico[etat_suivant][0]] = coup
if categories[etat[0]] > 0:
dico[etat] = (etat[0], coups_prochains[etat[0]])
elif categories[0] > 0:
dico[etat] = (0, coups_prochains[0])
else:
dico[etat] = (3 - etat[0], coups_prochains[3 - etat[0]])
aux(init()) # on commence à l'état initial
return dico
def play(humain):
d = calculer_strategie()
etat = init()
display(etat)
while coups_possibles(etat) != [] and est_gagnant(etat) == 0:
joueur = etat[0]
grille = etat[1]
if joueur == humain:
print("Your turn.")
while True:
s = input("> ")
if s not in ['0','1','2','3','4','5','6','7']:
print("Colonne non comprise.")
continue
x = int(s)
if grille[0][x] != 0:
print("Colonne pleine.")
continue
coup = x
break
else: # joueur == 2
coup = d[etat][1]
assert coup != []
print(f"Joueur {joueur} joue en {coup}")
etat = jouer_coup(etat, coup)
display(etat)
print("Fin de partie")
vainqueur = est_gagnant(etat)
if vainqueur == 0:
print("Match nul")
else:
print(f"Le vainqueur est {vainqueur}.")
# play(1) for you to start,
# play(2) for the computer to start.
play(2)