Select Git revision
2048_graphical.py
2048_graphical.py 3.30 KiB
from tkinter import *
from game2048.grid_2048 import *
# DICTIONNAIRE
TILES_BG_COLOR = {0: "#9e948a", 2: "#eee4da", 4: "#ede0c8", 8: "#f1b078", \
16: "#eb8c52", 32: "#f67c5f", 64: "#f65e3b", \
128: "#edcf72", 256: "#edcc61", 512: "#edc850", \
1024: "#edc53f", 2048: "#edc22e", 4096: "#5eda92", \
8192: "#24ba63"}
TILES_FG_COLOR = {0: "#776e65", 2: "#776e65", 4: "#776e65", 8: "#f9f6f2", \
16: "#f9f6f2", 32: "#f9f6f2", 64: "#f9f6f2", 128: "#f9f6f2", \
256: "#f9f6f2", 512: "#f9f6f2", 1024: "#f9f6f2", \
2048: "#f9f6f2", 4096: "#f9f6f2", 8192: "#f9f6f2"}
TILES_FONT = {"Verdana", 40, "bold"}
#FIN DICTIONNAIRE
#FONCTIONS
def graphical_inti():
game_2048=Tk()
fenetre=Toplevel()
fenetre.title("2048")
game_2048.title("2048")
game_2048["bg"]="pink"
return(game_2048)
#attention il faut toujours faire game_2048.mainloop() à la fin du programme
def create_empty_grid():
list_tuile=[]
for ligne in range (4):
list_tuile.append([])
for colonne in range (4):
list_tuile[ligne].append(Frame(game_2048,borderwidth=2, relief="solid",height = 100, width = 100,bg=TILES_BG_COLOR[0]))
list_tuile[ligne][colonne].grid(row=ligne,column=colonne)
return(list_tuile)
#ATTENTION lors de la création d'un frame, sa hauteur et sa largeur vaut 0 de base : modifier directement lors de la création par height= et width=
def update_graphical_grid(grid_game):
#cette fonction ne marche que pour les grilles 4x4
list_tuile=[]
list_label=[]
for ligne in range (4):
list_tuile.append([])
list_label.append([])
#pour chaque ligne
for colonne in range (4):
#on liste les colonnes où il va y avoir des numéros
list_colonne_wt_label=[]
#on regarde la valeur de la tuile
value_tuile=grid_game[ligne][colonne]
#si la valeur est zero, il n'y a pas de label
if value_tuile==0 :
list_tuile[ligne].append(Frame(game_2048,borderwidth=2, relief="solid",height = 100, width = 100,bg=TILES_BG_COLOR[0]))
#sinon on dit crée un label et retenir sa position pour le positionner
else :
#création de la tuile
list_tuile[ligne].append(Frame(game_2048,borderwidth=2, relief="solid",height = 100, width = 100,bg=TILES_BG_COLOR[value_tuile]))
#création du label
list_label[ligne].append(Label(list_tuile[ligne][colonne],text=str(value_tuile),fg=TILES_FG_COLOR[value_tuile],bg=TILES_BG_COLOR[value_tuile],height = 5, width = 10,font=TILES_FONT))
#mémoire de sa position
list_colonne_wt_label.append(colonne)
#on positionne correctement le label
for lab in range (len(list_colonne_wt_label)):
list_label[ligne][lab].grid(row=ligne,column=list_colonne_wt_label[lab])
#on positionne correctement les tuiles
list_tuile[ligne][colonne].grid(row=ligne,column=colonne)
return(list_tuile)
#FIN FONCTION
#EXECUTION
game_2048=graphical_inti()
grid_game=init_game()
grid_size=4
background=Frame(game_2048)
graphical_grid=[]
graphical_grid=update_graphical_grid(grid_game)
game_2048.mainloop()