Select Git revision
grid_2048.py
grid_2048.py 2.56 KiB
import random as rd
#FONCTIONNALITE 1
def create_grid(taille):
#la taille doit etre supérieure à 1
grille = []
ligne =[]
for case in range(taille):
ligne.append(' ') #on crée une ligne contenant le bon nombre de cases
for nb_ligne in range (taille):
grille.append(ligne.copy()) #permet de découpler les lignes
return grille
def add_new_tile(grid):
#la position indiqué doit etre cohérente avec les dimensions de la grille considérée
value=choose_value_new_tile()
(x,y)=get_new_position(grid)
grid[x][y]=value
#attention, la fonction modifie la liste passée en argument !
return(grid)
def choose_value_new_tile():
value=rd.choice([2,2,2,2,2,2,2,2,2,4])
return(value)
def get_all_tiles (grid):
nb_ligne=len(grid)
nb_colonne=len(grid[0]) #on suppose que la grille a au moins une ligne
tiles=[]
for ligne in range (nb_ligne):
for colonne in range (nb_colonne):
tile = grid[ligne][colonne]
if tile == ' ':
tiles.append(0)
else :
tiles.append(tile)
return(tiles)
def get_empty_tile_position(grid):
position_empty=[]
for ligne in range (len(grid)):
for colonne in range (len(grid[0])):
if grid[ligne][colonne]==0 or grid[ligne][colonne]==' ' :
position_empty.append((ligne,colonne))
return(position_empty)
def get_new_position (grid):
#choisi une postion au hasard parmis les position libre
position_empty=get_empty_tile_position(grid)
(x,y)=rd.choice(position_empty)
return((x,y))
def grid_get_value(grid,x,y):
if grid[x][y] == ' ':
return (0)
else :
return(grid[x][y])
def init_game(taille):
new_grid=create_grid(taille)
(x1,y1)=get_new_position(new_grid) #choisi la première tuile qui va être un 2 ou un 4
new_grid[x1][y1]=choose_value_new_tile()
(x2,y2)=get_new_position(new_grid) #choisi la deuxièeme tuile
new_grid[x2][y2]=choose_value_new_tile()
return(new_grid)
#FONCTIONNALITE 2
def grid_to_string(grid):
affichage=" "+"=== "*len(grid)+"\n"
for ligne in range (len(grid)):
for colonne in range (len(grid[0])):
#on suppose que la grille a au moins une ligne et qu'elles ont toutes la même taille
affichage=affichage+"| "+str(grid[ligne][colonne])+" "
affichage=affichage+"|\n"
affichage=affichage+" "+"=== "*len(grid)+"\n"
#on suppose que la grille est carrée
return (affichage)
print(grid_to_string([[1,2," "],[" ",4,3],[4,7,6]]))
def long_value