Skip to content
Snippets Groups Projects
Commit da93bef4 authored by Garance Guey's avatar Garance Guey
Browse files

dowload_

parent b9b1e4f4
Branches
No related tags found
No related merge requests found
...@@ -91,6 +91,7 @@ def long_value_with_theme(grid,theme): ...@@ -91,6 +91,7 @@ def long_value_with_theme(grid,theme):
#FONCTIONNALITE 4 #FONCTIONNALITE 4
def del_zeros(row): def del_zeros(row):
#fonction permettant de supprimer les zeros d'une ligne, qui sont inutiles lors du processus de fusion des cases
n = len(row) n = len(row)
new_row = [] new_row = []
for i in range(n): for i in range(n):
...@@ -99,6 +100,7 @@ def del_zeros(row): ...@@ -99,6 +100,7 @@ def del_zeros(row):
return new_row, n return new_row, n
def move_left_bis(row,i=0): def move_left_bis(row,i=0):
#fonction aide pour la fonction recursive finale
n = len(row) n = len(row)
if i >= n-1: if i >= n-1:
return row return row
...@@ -115,10 +117,13 @@ def move_row_left(row): ...@@ -115,10 +117,13 @@ def move_row_left(row):
return new_row + [0]*(n - len(new_row)) return new_row + [0]*(n - len(new_row))
def move_row_right(row): def move_row_right(row):
#bouger à droite revient à bouger à gauche la liste lue dans le sens inverse
return move_row_left(row[::-1])[::-1] return move_row_left(row[::-1])[::-1]
def move_grid(grid,d): def move_grid(grid,d):
taille=len(grid) taille=len(grid)
#cas droite et gauche plus simple car utilisation directe des fonctions codées ci dessus
if d=="left": if d=="left":
new_grid=[] new_grid=[]
for ligne in range (taille): for ligne in range (taille):
...@@ -129,28 +134,34 @@ def move_grid(grid,d): ...@@ -129,28 +134,34 @@ def move_grid(grid,d):
for ligne in range (taille): for ligne in range (taille):
row=grid[ligne] row=grid[ligne]
new_grid.append(move_row_right(row)) new_grid.append(move_row_right(row))
#si on doit bouger en haut ou en bas celà revient à bouger la transposer à gauche ou à droite
else: else:
grid_t=transpose_grid(grid) grid_t=transpose_grid(grid) #on s'interresse donc à la transposée
new_grid_t=[] new_grid_t=[]
if d=="up": if d=="up":
for ligne in range (taille): for ligne in range (taille):
row=grid_t[ligne] row=grid_t[ligne]
new_grid_t.append(move_row_left(row)) new_grid_t.append(move_row_left(row))
else : else : #on ne peut bouger que en haut,bas,droite,gauche, pas besoin de elif donc par deduction
for ligne in range (taille): for ligne in range (taille):
row=grid_t[ligne] row=grid_t[ligne]
new_grid_t.append(move_row_right(row)) new_grid_t.append(move_row_right(row))
new_grid=transpose_grid(new_grid_t) #on obtient la transposée de la grille finale
new_grid=transpose_grid(new_grid_t) #permet de retoruver la grille "dans le bon sens"
return(new_grid) return(new_grid)
def transpose_grid (liste): def transpose_grid (liste):
#fonction permettant de transposer une liste de liste que l'on identifie à sa matrice
#cette fonction ne marche que sur des matrice carrée
n=len(liste) n=len(liste)
transpo_liste=[] transpo_liste=[]
for colonne in range (n) : for colonne in range (n) :
ligne_transpo=[] ligne_transpo=[] #création des lignes de la transposée
for ligne in range (n) : for ligne in range (n) :
ligne_transpo.append(liste[ligne][colonne]) ligne_transpo.append(liste[ligne][colonne])
transpo_liste.append(ligne_transpo) transpo_liste.append(ligne_transpo)
#renvoie une liste
return(transpo_liste) return(transpo_liste)
...@@ -160,12 +171,14 @@ def is_grid_full(grid): ...@@ -160,12 +171,14 @@ def is_grid_full(grid):
return get_empty_tiles_positions(grid) == [] return get_empty_tiles_positions(grid) == []
def move_possible(grid): def move_possible(grid):
#renvoie une liste de 4 booléens indiquant si le déplacement à gauche,droite,haut,bas est possible.
possibles = [] possibles = []
for d in ["left","right","up","down"]: for d in ["left","right","up","down"]:
possibles.append(move_grid(grid,d) != grid) possibles.append(move_grid(grid,d) != grid) #si le deplacement n'est pas possible, la grille reste inchangée apres avoir effectué ce déplacement
return possibles return possibles
def is_game_over(grid): def is_game_over(grid):
#on a perdu si la grille est pleine et que aucun mouvement n'est possible
return is_grid_full(grid) and True not in move_possible(grid) return is_grid_full(grid) and True not in move_possible(grid)
def get_grid_tile_max(grid): def get_grid_tile_max(grid):
...@@ -177,6 +190,7 @@ def did_you_win (grid): ...@@ -177,6 +190,7 @@ def did_you_win (grid):
#Fonctinnalité 6 #Fonctinnalité 6
def list_moove_possible (grid): def list_moove_possible (grid):
#renvoie la liste des deplacements possibles
list_bool=move_possible(grid) list_bool=move_possible(grid)
list_final=[] list_final=[]
if list_bool[0]: if list_bool[0]:
...@@ -192,18 +206,26 @@ def list_moove_possible (grid): ...@@ -192,18 +206,26 @@ def list_moove_possible (grid):
def random_play(): def random_play():
#on suppose que le jeu par defaut comprend une grille de 4x4 #on suppose que le jeu par defaut comprend une grille de 4x4
#phase d'initialisation du jeu
grid_game=init_game(4) grid_game=init_game(4)
print(grid_to_string_with_size_and_theme(grid_game,THEMES["0"],4)) print(grid_to_string_with_size_and_theme(grid_game,THEMES["0"],4))
#phase de jeu
while not is_game_over(grid_game): while not is_game_over(grid_game):
d=rd.choice(list_moove_possible(grid_game))
grid_game=move_grid(grid_game,d) #pour chaque tour
grid_game=grid_add_new_tile(grid_game) d=rd.choice(list_moove_possible(grid_game)) #on choisi un mouvement
print(grid_to_string_with_size_and_theme(grid_game,THEMES["0"],4)) grid_game=move_grid(grid_game,d) #on le fait
print("\n***********************************\n") grid_game=grid_add_new_tile(grid_game) #une tuile se crée
print(grid_to_string_with_size_and_theme(grid_game,THEMES["0"],4)) #on affuche le résulat
print("\n***********************************\n") #permet aux différentes grilles d'être plus lisible
#vérification si le jeu est gagnant ou perdant
if did_you_win(grid_game): if did_you_win(grid_game):
print("CONGRATS ! YOU WON !!!") print("CONGRATS ! YOU WON !!!")
else : else :
print ("YOU FAIL, TRY AGAIN") print ("YOU FAIL, TRY AGAIN")
return() return()
random_play() #TEST : random_play()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment