-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcore.py
More file actions
75 lines (64 loc) · 2.42 KB
/
core.py
File metadata and controls
75 lines (64 loc) · 2.42 KB
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
from constants import Black,White, Empty, direction
# Fonction qui ajoute un pion au plateau
def Addpion(plateau, joueur, x, y):
# Vérifie que le coup est valide
if not Can_place(plateau, joueur, x, y):
print("Coup invalide.")
return False
# Ajoute le pion au plateau
plateau[x][y] = joueur
# Le coup a pu être joué
return True
def Capture_list(plateau, x, y, direction, joueur):
capture_list=[]
dx=direction[0]
dy=direction[1]
i=1
while (0 <= x + dx * i < 8 and 0 <= y + dy * i < 8) and plateau[x + dx * i][y + dy * i] != joueur:
capture_list.append((x + dx * i, y + dy * i))
i=i+1
print(capture_list)
return capture_list
def Capture_count(plateau, x, y, direction, joueur):
capture_count=0
dx=direction[0]
dy=direction[1]
i=1
while (0 <= x + dx * i < 8 and 0 <= y + dy * i < 8) and plateau[x + dx * i][y + dy * i] != joueur:
capture_count=capture_count+1
i=i+1
return capture_count
# Fonction qui vérifie si un coup est possible
def Can_place(plateau, joueur, x, y):
capture=0
capture_list=[]
# Vérifie si la case est vide
if plateau[x][y] != Empty:
return False,"Case remplis"
# Vérifie si le joueur peut capturer des pions
for dx, dy in direction:
#print(dx,dy)
if 0 <= x + dx < 8 and 0 <= y + dy < 8 and plateau[x + dx][y + dy] == (joueur ^ 1):
# Vérifie si la case libre est a cote (dans la direction) d'une case occupée par le joueur adverse
capturing=True
i=1
while (0 <= x + dx * i < 8 and 0 <= y + dy * i < 8) and capturing==True :
#print("i =",i )
if plateau[x + dx * i][y + dy * i] == joueur:
#deuxieme pion detecter
#print("capture", i)
capture = capture + (i-1)
capture_list.append((dx, dy))
capturing=False
elif plateau[x + dx * i][y + dy * i] == Empty:
#print("case vide")
capturing=False
#Continue la capture
elif plateau[x + dx * i][y + dy * i] == (joueur ^ 1):
i=i+1
#print("capture count", capture)
if capture>0:
#print(capture_list)
return True, capture_list
else:
return False,"Pas de capture"