-
Notifications
You must be signed in to change notification settings - Fork 1
/
mouvement.py
165 lines (138 loc) · 4.8 KB
/
mouvement.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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
"""
mouvement.py
Fonction de mouvement des cases du jeu.
Auteur : Ahhj93
"""
def gauche(tab: list) -> tuple[bool, bool]:
"""
gauche(tab : tab) : (deplacement : bouléen, fusion : bouléen)
Déplacement des cases vers la gauche et fusion des cases si deux cases côte à côte sont égaux.
Variables locales:
i : ligne
j : colonne
"""
fusion = False
deplacement = False
# Boucle pour chaque ligne
for i in range(4):
# Déplacement des cases vers la gauche
for _ in range(3):
for j in range(3, 0, -1):
if tab[i][j - 1] == 0:
tab[i][j - 1] = tab[i][j]
tab[i][j] = 0
deplacement = True
# Fusion des cases
for j in range(0, 3):
if tab[i][j] == tab[i][j + 1] and tab[i][j] != 0:
tab[i][j] = (tab[i][j]) * 2
tab[i][j + 1] = 0
fusion = True
# Déplacement des cases vers la gauche
for _ in range(3):
for j in range(3, 0, -1):
if tab[i][j - 1] == 0:
tab[i][j - 1] = tab[i][j]
tab[i][j] = 0
deplacement = True
# Retourne les valeurs de déplacement et fusion
return deplacement, fusion
def haut(tab: list) -> tuple[bool, bool]:
"""
haut(tab : tab) : (deplacement : bouléen, fusion : bouléen)
Déplacement des cases vers la haut et fusion des cases si deux cases côte à côte sont égaux.
Variables locales:
i : ligne
j : colonne
"""
deplacement = False
fusion = False
# Boucle pour chaque colonne
for j in range(4):
# Déplacement des cases vers la haut
for _ in range(3):
for i in range(3, 0, -1):
if tab[i - 1][j] == 0:
tab[i - 1][j] = tab[i][j]
tab[i][j] = 0
deplacement = True
# Fusion des cases
for i in range(0, 3):
if tab[i][j] == tab[i + 1][j] and tab[i][j] != 0:
tab[i][j] = (tab[i][j]) * 2
tab[i + 1][j] = 0
fusion = True
# Déplacement des cases vers la haut
for _ in range(3):
for i in range(3, 0, -1):
if tab[i - 1][j] == 0:
tab[i - 1][j] = tab[i][j]
tab[i][j] = 0
deplacement = True
# Retourne les valeurs de déplacement et fusion
return deplacement, fusion
def droite(tab: list) -> tuple[bool, bool]:
"""
droite(tab : tab) : (deplacement : bouléen, fusion : bouléen)
Déplacement des cases vers la droite et fusion des cases si deux cases côte à côte sont égaux.
Variables locales:
i : ligne
j : colonne
"""
deplacement = False
fusion = False
# Boucle pour chaque ligne
for i in range(4):
# Déplacement des cases vers la droite
for _ in range(3):
for j in range(0, 3):
if tab[i][j + 1] == 0:
tab[i][j + 1] = tab[i][j]
tab[i][j] = 0
deplacement = True
# Fusion des cases
for j in range(3, 0, -1):
if tab[i][j] == tab[i][j - 1] and tab[i][j] != 0:
tab[i][j] = (tab[i][j]) * 2
tab[i][j - 1] = 0
fusion = True
# Déplacement des cases vers la droite
for _ in range(3):
for j in range(0, 3):
if tab[i][j + 1] == 0:
tab[i][j + 1] = tab[i][j]
tab[i][j] = 0
deplacement = True
# Retourne les valeurs de déplacement et fusion
return deplacement, fusion
def bas(tab: list) -> tuple[bool, bool]:
"""
bas(tab : tab) : (deplacement : bouléen, fusion : bouléen)
j : colonne
"""
deplacement = False
fusion = False
# Boucle pour chaque colonne
for j in range(4):
# Déplacement des cases vers le bas
for _ in range(3):
for i in range(0, 3):
if tab[i + 1][j] == 0:
tab[i + 1][j] = tab[i][j]
tab[i][j] = 0
deplacement = True
# Fusion des cases
for i in range(3, 0, -1):
if tab[i][j] == tab[i - 1][j] and tab[i][j] != 0:
tab[i][j] = (tab[i][j]) * 2
tab[i - 1][j] = 0
fusion = True
# Déplacement des cases vers la droite
for _ in range(3):
for i in range(0, 3):
if tab[i + 1][j] == 0:
tab[i + 1][j] = tab[i][j]
tab[i][j] = 0
deplacement = True
# Retourne les valeurs de déplacement et fusion
return deplacement, fusion