From 52154b82036e2fc07ddf7f385e7f7ecd909f69e2 Mon Sep 17 00:00:00 2001 From: Ahhj93 <69793084+Ahhj93@users.noreply.github.com> Date: Sat, 1 Jul 2023 13:56:07 +0200 Subject: [PATCH 01/16] Update --- .vscode/settings.json | 5 +- autresfonctions2048.py | 12 +- 2048.py => main.py | 339 ++++++++++++++++++++++------------------- taillefenetre.py | 22 +-- 4 files changed, 199 insertions(+), 179 deletions(-) rename 2048.py => main.py (70%) diff --git a/.vscode/settings.json b/.vscode/settings.json index d99f2f3..73561ce 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,5 +2,8 @@ "[python]": { "editor.defaultFormatter": "ms-python.black-formatter" }, - "python.formatting.provider": "none" + "python.formatting.provider": "none", + "editor.rulers": [ + 100 + ] } \ No newline at end of file diff --git a/autresfonctions2048.py b/autresfonctions2048.py index bf10a63..cffb06c 100644 --- a/autresfonctions2048.py +++ b/autresfonctions2048.py @@ -4,10 +4,10 @@ ##Couleur #Gris -gris1 = "#505050" -gris2 = "#4D4D4D" -gris3 = "#3C3C3C" -gris4 = "#1E1E1E" +GRIS1 = "#505050" +GRIS2 = "#4D4D4D" +GRIS3 = "#3C3C3C" +GRIS4 = "#1E1E1E" # Bleu bleu1 = "#1177BB" bleu2 = "#0E639C" @@ -18,7 +18,7 @@ blanc = "#FFFFFF" ## Variable -bgTemp = gris3 +bgTemp = GRIS3 fgTemp = blanc def TuileAleatoire(): @@ -84,7 +84,7 @@ def EnterBoutonMinimiser(event): global fgTemp bgTemp = event.widget["bg"] fgTemp = event.widget["fg"] - event.widget.configure(bg = gris1, fg = blanc) # Changement de couleur du bouton + event.widget.configure(bg = GRIS1, fg = blanc) # Changement de couleur du bouton def LeaveBoutonMinimiser(event): """ diff --git a/2048.py b/main.py similarity index 70% rename from 2048.py rename to main.py index 89fd3cd..913f9b1 100644 --- a/2048.py +++ b/main.py @@ -1,11 +1,16 @@ +""" +main.py + Fichier qui contient le code du jeu 2048 + Auteur : Ahhj93 +""" # Importation des bibliothèques import tkinter import tkinter.messagebox import copy -import pygame import signal -from PIL import Image, ImageTk import time +import pygame +from PIL import Image, ImageTk # Importation des fichiers .py du dossier python import mouvement @@ -16,12 +21,12 @@ try: from pypresence import Presence - RPC = True + RPC_MODULE = True CLIENT_ID = "1111927811419164682" RPC = Presence(CLIENT_ID) RPC.connect() -except: - RPC = False +except ModuleNotFoundError: + RPC_MODULE = False print("Module pypresence not found so the Discord RPC is not working") # End- Discord RPC @@ -32,74 +37,75 @@ nbDeplacement = 0 perdu = False gagne = False -minimiser = False jouer = True -def ReinitialiserScore(): +def reinitialiser_score(): """ - ReinitialiserScore() + reinitialiser_score() Reinitialiser le record """ - fichierEcrire = open( - "record.txt", "w" + fichier_ecrire = open( + "record.txt", "w", encoding="utf-8" ) # On ouvre le fichier record.txt en écriture - fichierEcrire.write("0") # On écrit 0 dans le fichier - fichierEcrire.close() # On ferme le fichier - AfficherJeu() - - -def FenetreFocusIn(event): - """ - FenetreFocusIn(event) - Fonction qui permet de mettre à jour la couleur de la fenêtre lorsqu'on a le focus sur la fênetre - """ - - barreTitre.configure(bg=gris3) - titre.configure(bg=gris3, fg=blanc) - boutonFermerMinimiserFrame.configure(bg=gris3) - boutonFermer.configure(bg=gris3, fg=blanc) - boutonMinimiser.configure(bg=gris3, fg=blanc) - label.configure(bg=gris3) - menu.configure(bg=gris3, fg=blanc) - menuDeroulant.configure(bg=gris3, fg=blanc) - fenetre.configure(bg=gris2) - recordLabel.configure(bg=gris2, fg=blanc) - nbDeplacementLabel.configure(bg=gris2, fg=blanc) - sommeTableauLabel.configure(bg=gris2, fg=blanc) - timerLabel.configure(bg=gris2, fg=blanc) + fichier_ecrire.write("0") # On écrit 0 dans le fichier + fichier_ecrire.close() # On ferme le fichier + afficher_jeu() + + +def fenetre_focus_in(_event): + """ + fenetre_focus_in(_event) + Fonction qui permet de mettre à jour la couleur de la fenêtre lorsqu'on a le focus sur la + fênetre + """ + + barreTitre.configure(bg=GRIS3) + titre.configure(bg=GRIS3, fg=blanc) + boutonFermerMinimiserFrame.configure(bg=GRIS3) + boutonFermer.configure(bg=GRIS3, fg=blanc) + boutonMinimiser.configure(bg=GRIS3, fg=blanc) + label.configure(bg=GRIS3) + menu.configure(bg=GRIS3, fg=blanc) + menuDeroulant.configure(bg=GRIS3, fg=blanc) + fenetre.configure(bg=GRIS2) + recordLabel.configure(bg=GRIS2, fg=blanc) + nbDeplacementLabel.configure(bg=GRIS2, fg=blanc) + sommeTableauLabel.configure(bg=GRIS2, fg=blanc) + timerLabel.configure(bg=GRIS2, fg=blanc) for i in range(4): for j in range(4): - Case[i][j].configure(bg=gris2) # type: ignore + Case[i][j].configure(bg=GRIS2) # type: ignore -def FenetreFocusOut(event): +def fenetre_focus_out(_event): """ - FenetreFocusOut(event) - Fonction qui permet de mettre à jour la couleur de la fenêtre lorsqu'on n'a plus le focus sur la fênetre + fenetre_focus_out(_event) + Fonction qui permet de mettre à jour la couleur de la fenêtre lorsqu'on n'a plus le focus + sur la fênetre """ - barreTitre.configure(bg=gris4) - titre.configure(bg=gris4, fg=gris1) - boutonFermerMinimiserFrame.configure(bg=gris4) - boutonFermer.configure(bg=gris4, fg=gris1) - boutonMinimiser.configure(bg=gris4, fg=gris1) - label.configure(bg=gris4) - menu.configure(bg=gris4, fg=gris1) - menuDeroulant.configure(bg=gris4, fg=gris1) - fenetre.configure(bg=gris3) - recordLabel.configure(bg=gris3, fg=gris1) - nbDeplacementLabel.configure(bg=gris3, fg=gris1) - sommeTableauLabel.configure(bg=gris3, fg=gris1) - timerLabel.configure(bg=gris3, fg=gris1) + barreTitre.configure(bg=GRIS4) + titre.configure(bg=GRIS4, fg=GRIS1) + boutonFermerMinimiserFrame.configure(bg=GRIS4) + boutonFermer.configure(bg=GRIS4, fg=GRIS1) + boutonMinimiser.configure(bg=GRIS4, fg=GRIS1) + label.configure(bg=GRIS4) + menu.configure(bg=GRIS4, fg=GRIS1) + menuDeroulant.configure(bg=GRIS4, fg=GRIS1) + fenetre.configure(bg=GRIS3) + recordLabel.configure(bg=GRIS3, fg=GRIS1) + nbDeplacementLabel.configure(bg=GRIS3, fg=GRIS1) + sommeTableauLabel.configure(bg=GRIS3, fg=GRIS1) + timerLabel.configure(bg=GRIS3, fg=GRIS1) for i in range(4): for j in range(4): - Case[i][j].configure(bg=gris3) # type: ignore + Case[i][j].configure(bg=GRIS3) # type: ignore -def Timer(i, label): +def fonction_timer(i, label): """ - Timer(i, label) + fonction_timer(i, label) Fonction qui permet de mettre à jour le label timerLabel Entrée : i : temps en seconde @@ -111,66 +117,66 @@ def Timer(i, label): label.set(f" Timer : {minute}:{seconde}") # On met à jour le label i = round(time.time() - tempsDebut) # On met à jour le temps - if RPC: - sommeTableau = ( + if RPC_MODULE: + somme_tableau = ( sum(TableauJeu[0]) + sum(TableauJeu[1]) + sum(TableauJeu[2]) + sum(TableauJeu[3]) ) - plusGrandNombre = max( + plus_grand_nombre = max( *TableauJeu[0], *TableauJeu[1], *TableauJeu[2], *TableauJeu[3] ) RPC.update( details="Un jeu de puzzle numérique addictif", - state="Score : " + str(sommeTableau), + state="Score : " + str(somme_tableau), start=tempsDebut, large_image="logo", large_text="Python-2048", - small_image=str(plusGrandNombre), - small_text="Plus grand nombre : " + str(plusGrandNombre), + small_image=str(plus_grand_nombre), + small_text="Plus grand nombre : " + str(plus_grand_nombre), buttons=[ {"label": "GitHub", "url": "https://github.com/Ryse93/Python-2048"} ], ) - # On rappelle la fonction Timer() après 1 seconde - fenetre.after(1000, lambda: [Timer(i, label)]) + # On rappelle la fonction fonction_timer() après 1 seconde + fenetre.after(1000, lambda: [fonction_timer(i, label)]) -def Focus(event): +def focus(_event): """ - Focus(event) + focus(_event) Fonction qui permet de récupérer le focus de la fenêtre """ fenetre.focus_get() # On récupère le focus de la fenêtre fenetre.lift() # On remonte la fenêtre - FenetreFocusIn(None) + fenetre_focus_in(None) -def Minimiser(event): +def minimiser(_event): """ - Minimiser(event) + minimiser(_event) Minimiser la fenêtre """ fenetre.withdraw() -def Agrandir(event): +def agrandir(_event): """ - Agrandir(event) + agrandir(_event) Agrandir la fenêtre """ fenetre.deiconify() -def Sigint_handler(signal, frame): +def sigint_handler(_signal, _frame): """ - Sigint_handler(signal, frame) - Ferme la fenetre sans erreur lors du KeyboardInterrupt + sigint_handler(_signal, _frame) + Fonction qui permet de fermer la fenetre sans erreur lors du KeyboardInterrupt """ fenetre.destroy() # Fermer la fenêtre @@ -178,21 +184,32 @@ def Sigint_handler(signal, frame): exit() # Quitter le programme -def BougerFenetreCommence(event): +def bouger_fenetre_commence(event): + """ + bouger_fenetre_commence(event) + Fonction qui permet de récupérer la position de la souris au début du déplacement + Entrée : + event : événement + """ global x, y # On récupère les variables x et y x = event.x # On récupère la position de la souris en x y = event.y # On récupère la position de la souris en y -def BougerFenetreArrete(event): +def bouger_fenetre_arrete(_event): + """ + bouger_fenetre_arrete(_event) + Fonction qui permet de réinitialiser les variables x et y + """ global x, y # On récupère les variables x et y x = None # On réinitialise x y = None # On réinitialise y -def BougerFenetre(event): +def bouger_fenetre(event): """ - BougerFenetre(event) + bouger_fenetre(event) + Fonction qui permet de bouger la fenêtre Entrée : event : événement Sortie : @@ -215,9 +232,9 @@ def BougerFenetre(event): fenetre.geometry(f"+{ax}+{ay}") # On déplace la fenêtre -def Quitter(): +def quitter(): """ - Quitter() + quitter() Fermer tkinter et pygame """ @@ -230,9 +247,9 @@ def Quitter(): exit() # Quitter le programme -def Son(): +def son(): """ - Son() + son() Initialise ou éteint pygame.mixer en fonction de la variable parametreSon """ @@ -243,21 +260,21 @@ def Son(): pygame.mixer.quit() # Arrêt de pygame.mixer -def JouerSon(son): +def jouer_son(fichier_son: str): """ - JouerSon(son : string) + jouer_son(son : string) Jouer le son donné """ # Si parametreSon est à True if parametreSon.get(): - pygame.mixer.music.load(son) # Chargement du son + pygame.mixer.music.load(fichier_son) # Chargement du son pygame.mixer.music.play(loops=0) # Jouer le son -def AfficherJeu(): +def afficher_jeu(): """ - AfficherJeu() + afficher_jeu() Sortie : Affiche le tableau avec 4 lignes et forme la fenêtre """ @@ -266,36 +283,36 @@ def AfficherJeu(): # Création des images for j in range(4): Img[i][j] = AfficherImage(TableauJeu[i][j], taille) # type: ignore # Création des images - Case[i][j].configure(image=Img[i][j]) # type: ignore - Case[i][j].image = Img[i][j] # type: ignore + Case[i][j].configure(image=Img[i][j]) # type: ignore + Case[i][j].image = Img[i][j] # type: ignore # Afficher le nombre de déplacement nbDeplacementVar.set(f" Nombre de déplacement : {nbDeplacement}") # Afficher le score (somme du tableau) - sommeTableau = ( + somme_tableau = ( sum(TableauJeu[0]) + sum(TableauJeu[1]) + sum(TableauJeu[2]) + sum(TableauJeu[3]) ) - sommeTableauVar.set(f" Score : {sommeTableau}") + sommeTableauVar.set(f" Score : {somme_tableau}") # Afficher le record - fichierLire = open("record.txt", "r") - record = int(fichierLire.read()) - fichierLire.close() - if sommeTableau > record: - fichierEcrire = open("record.txt", "w") - fichierEcrire.write(str(sommeTableau)) - fichierEcrire.close() - record = sommeTableau + fichier_lire = open("record.txt", "r", encoding="utf-8") + record = int(fichier_lire.read()) + fichier_lire.close() + if somme_tableau > record: + fichier_ecrire = open("record.txt", "w", encoding="utf-8") + fichier_ecrire.write(str(somme_tableau)) + fichier_ecrire.close() + record = somme_tableau recordVar.set(f" Record score : {record}") -def Recommencer(): +def recommencer(): """ - Recommencer(): + recommencer(): Recommencer le jeu """ @@ -324,12 +341,12 @@ def Recommencer(): caseDebut += 1 # Afficher le jeu - AfficherJeu() + afficher_jeu() -def Appuyer(event): +def appuyer(event): """ - Appuyer(event) + appuyer(event) Fonction utilisée en jeu """ @@ -380,14 +397,14 @@ def Appuyer(event): # Si déplacement impossible, perdu if not deplacementPossible and not perdu and jouer: perdu = True - JouerSon("Audio/Perdu.mp3") + jouer_son("Audio/Perdu.mp3") jouer = False if tkinter.messagebox.showinfo( "Perdu", f"Vous avez perdu !\n{nbDeplacementVar.get()}\n{sommeTableauVar.get()}\n{timer.get()}", icon="info", ): - Recommencer() + recommencer() jouer = True elif deplacementPossible and jouer: @@ -406,10 +423,10 @@ def Appuyer(event): deplacementFait = True if fusionGauche: - JouerSon("Audio/Fusion.mp3") # Jouer le son de la fusion + jouer_son("Audio/Fusion.mp3") # Jouer le son de la fusion else: # Jouer le son du déplacement - JouerSon("Audio/Deplacement.mp3") + jouer_son("Audio/Deplacement.mp3") # 38 Flèche haut # 90 Z @@ -423,10 +440,10 @@ def Appuyer(event): deplacementFait = True if fusionHaut: - JouerSon("Audio/Fusion.mp3") # Jouer le son de la fusion + jouer_son("Audio/Fusion.mp3") # Jouer le son de la fusion else: # Jouer le son du déplacement - JouerSon("Audio/Deplacement.mp3") + jouer_son("Audio/Deplacement.mp3") # 39 Flèche droite # 68 D @@ -440,10 +457,10 @@ def Appuyer(event): deplacementFait = True if fusionDroite: - JouerSon("Audio/Fusion.mp3") # Jouer le son de la fusion + jouer_son("Audio/Fusion.mp3") # Jouer le son de la fusion else: # Jouer le son du déplacement - JouerSon("Audio/Deplacement.mp3") + jouer_son("Audio/Deplacement.mp3") # 40 Flèche bas # 83 S @@ -457,10 +474,10 @@ def Appuyer(event): deplacementFait = True if fusionBas: - JouerSon("Audio/Fusion.mp3") # Jouer le son de la fusion + jouer_son("Audio/Fusion.mp3") # Jouer le son de la fusion else: # Jouer le son du déplacement - JouerSon("Audio/Deplacement.mp3") + jouer_son("Audio/Deplacement.mp3") if caseVide and deplacementFait: # Faire apparaître une nouvelle case de 2 @@ -474,7 +491,7 @@ def Appuyer(event): nbDeplacement += 1 # Valeur du tableau "TableauJeu" dans la fenêtre - AfficherJeu() + afficher_jeu() # Test si 2048 est atteint for i in range(4): @@ -482,7 +499,7 @@ def Appuyer(event): jouer = False gagne = True # Son lorsque gagné - JouerSon("Audio/Gagne.mp3") + jouer_son("Audio/Gagne.mp3") # Message de victoire tkinter.messagebox.showinfo( "Gagné", @@ -493,7 +510,7 @@ def Appuyer(event): if not tkinter.messagebox.askyesno( "Continuer", "Voulez-vous continuez ?", icon="question" ): - Recommencer() + recommencer() jouer = True else: jouer = True @@ -514,8 +531,8 @@ def Appuyer(event): # Lancer la fenêtre Tkinter root = tkinter.Tk() root.attributes("-alpha", 0.0) -root.bind("", Minimiser) -root.bind("", Agrandir) +root.bind("", minimiser) +root.bind("", agrandir) fenetre = tkinter.Toplevel(root) root.iconbitmap("2048.ico") # Îcone de la fenêtre @@ -532,27 +549,27 @@ def Appuyer(event): # fenetre.attributes("-topmost", True) # Fenêtre au premier plan # Barre titre pour changer la barre windows originale -barreTitre = tkinter.Frame(fenetre, bg=gris3, borderwidth=1) +barreTitre = tkinter.Frame(fenetre, bg=GRIS3, borderwidth=1) barreTitre.grid(row=0, columnspan=4, sticky="nsew") -barreTitre.bind("", BougerFenetreCommence) -barreTitre.bind("", BougerFenetreArrete) -barreTitre.bind("", BougerFenetre) +barreTitre.bind("", bouger_fenetre_commence) +barreTitre.bind("", bouger_fenetre_arrete) +barreTitre.bind("", bouger_fenetre) # Titre dans la barre titre -titre = tkinter.Label(fenetre, text=" 2048", bg=gris3, fg="white") +titre = tkinter.Label(fenetre, text=" 2048", bg=GRIS3, fg="white") titre.grid(row=0, column=1, columnspan=2) -titre.bind("", BougerFenetreCommence) -titre.bind("", BougerFenetreArrete) -titre.bind("", BougerFenetre) +titre.bind("", bouger_fenetre_commence) +titre.bind("", bouger_fenetre_arrete) +titre.bind("", bouger_fenetre) # Bouton fermer et minimiser dans la barre titre -boutonFermerMinimiserFrame = tkinter.Frame(fenetre, bg=gris3, borderwidth=2) +boutonFermerMinimiserFrame = tkinter.Frame(fenetre, bg=GRIS3, borderwidth=2) boutonFermerMinimiserFrame.grid(row=0, columnspan=4, sticky="ne") boutonFermer = tkinter.Button( boutonFermerMinimiserFrame, text=" X ", - command=Quitter, - bg=gris3, + command=quitter, + bg=GRIS3, fg="white", activebackground=rouge, activeforeground="white", @@ -566,9 +583,9 @@ def Appuyer(event): boutonFermerMinimiserFrame, text=" — ", command=lambda: [fenetre.withdraw(), root.iconify()], - bg=gris3, + bg=GRIS3, fg="white", - activebackground=gris1, + activebackground=GRIS1, activeforeground="white", borderwidth=0, font=("Arial", 12), @@ -581,18 +598,18 @@ def Appuyer(event): icone = Image.open("2048.ico") icone = icone.resize((16, 16)) icone = ImageTk.PhotoImage(icone) -label = tkinter.Label(barreTitre, image=icone, bg=gris3) +label = tkinter.Label(barreTitre, image=icone, bg=GRIS3) label.grid(row=0, column=0, padx=5, pady=5) -label.bind("", BougerFenetreCommence) -label.bind("", BougerFenetreArrete) -label.bind("", BougerFenetre) +label.bind("", bouger_fenetre_commence) +label.bind("", bouger_fenetre_arrete) +label.bind("", bouger_fenetre) # Création de l"onglet Menu menu = tkinter.Menubutton( barreTitre, text="Menu", - bg=gris3, - activebackground=gris1, + bg=GRIS3, + activebackground=GRIS1, activeforeground="white", foreground="white", ) @@ -600,21 +617,21 @@ def Appuyer(event): # Création d"un menu défilant menuDeroulant = tkinter.Menu( - menu, background=gris2, foreground=blanc, tearoff=0, activebackground=bleu3 + menu, background=GRIS2, foreground=blanc, tearoff=0, activebackground=bleu3 ) # Ajouter un checkbutton au menu parametreSon = tkinter.BooleanVar() parametreSon.set(True) menuDeroulant.add_checkbutton( - label="Son", onvalue=True, offvalue=False, variable=parametreSon, command=Son() # type: ignore + label="Son", onvalue=True, offvalue=False, variable=parametreSon, command=son() # type: ignore ) # Ajouter bouton Recommencer au menu -menuDeroulant.add_command(label="Recommencer", command=Recommencer) +menuDeroulant.add_command(label="Recommencer", command=recommencer) # Ajouter bouton Reinitialiser score au menu -menuDeroulant.add_command(label="Reinitialiser score", command=ReinitialiserScore) +menuDeroulant.add_command(label="Reinitialiser le score", command=reinitialiser_score) # Ajouter un séparateur menuDeroulant.add_separator() @@ -625,7 +642,7 @@ def Appuyer(event): ) # Ajouter bouton quitter au menu -menuDeroulant.add_command(label="Quitter", command=Quitter) +menuDeroulant.add_command(label="Quitter", command=quitter) # Ajouter un séparateur menuDeroulant.add_separator() @@ -649,16 +666,16 @@ def Appuyer(event): for i in range(4): for j in range(4): Img[i][j] = AfficherImage(TableauJeu[i][j], taille) # type: ignore # Création des images - Case[i][j] = tkinter.Label(fenetre, image=Img[i][j], bg=gris2) # type: ignore # Créer la case + Case[i][j] = tkinter.Label(fenetre, image=Img[i][j], bg=GRIS2) # type: ignore # Créer la case # Placer la case dans la grille de la fenêtre - Case[i][j].grid(row=i + 6, column=j) # type: ignore + Case[i][j].grid(row=i + 6, column=j) # type: ignore # Label record recordVar = tkinter.StringVar() recordLabel = tkinter.Label( fenetre, textvariable=recordVar, - bg=gris2, + bg=GRIS2, fg="white", font=("Helvetica", 10, "bold"), ) @@ -670,37 +687,37 @@ def Appuyer(event): nbDeplacementLabel = tkinter.Label( fenetre, textvariable=nbDeplacementVar, - bg=gris2, + bg=GRIS2, fg="white", font=("Helvetica", 10, "bold"), ) nbDeplacementLabel.grid(row=3, column=0, columnspan=4, sticky="w") -# Label sommeTableau (score) +# Label somme_tableau (score) sommeTableauVar = tkinter.StringVar() sommeTableauVar.set(f" Score : {0}") sommeTableauLabel = tkinter.Label( fenetre, textvariable=sommeTableauVar, - bg=gris2, + bg=GRIS2, fg="white", font=("Helvetica", 10, "bold"), ) sommeTableauLabel.grid(row=4, column=0, columnspan=4, sticky="w") # Timers -tempsDebut = int(time.time()) -temps = str(round(time.time() - tempsDebut)) +tempsDebut: int = int(time.time()) +temps: int = round(time.time() - tempsDebut) timer = tkinter.StringVar() -timer.set(temps) +timer.set(str(temps)) timerLabel = tkinter.Label( - fenetre, textvariable=timer, bg=gris2, fg="white", font=("Helvetica", 10, "bold") + fenetre, textvariable=timer, bg=GRIS2, fg="white", font=("Helvetica", 10, "bold") ) timerLabel.grid(row=5, column=0, columnspan=4, sticky="w") -Timer(temps, timer) +fonction_timer(temps, timer) # Afficher le tableau -AfficherJeu() +afficher_jeu() # Espacement entre les cases for i in range(4): @@ -708,26 +725,26 @@ def Appuyer(event): fenetre.grid_rowconfigure(i + 6, minsize=taille) # Couleur de fond fond -fenetre.configure(background=gris2) +fenetre.configure(background=GRIS2) # Exécution de la fonction "Quitter" lors de lors du click de fermeture de la fenêtre -fenetre.protocol("WM_DELETE_WINDOW", Quitter) +fenetre.protocol("WM_DELETE_WINDOW", quitter) # Détecter les touches appuyées -fenetre.bind_all("", Appuyer) +fenetre.bind_all("", appuyer) # Détecte KeyboardInterrupt -signal.signal(signal.SIGINT, Sigint_handler) +signal.signal(signal.SIGINT, sigint_handler) # Fenêtre au premier plan avec le focus fenetre.focus_force() fenetre.lift() # Détecter lorsqu'on a le focus ou pas -root.bind("", Focus) -root.bind("", FenetreFocusOut) -fenetre.bind("", FenetreFocusIn) -fenetre.bind("", FenetreFocusOut) +root.bind("", focus) +root.bind("", fenetre_focus_out) +fenetre.bind("", fenetre_focus_in) +fenetre.bind("", fenetre_focus_out) # Mainloop fenetre.mainloop() diff --git a/taillefenetre.py b/taillefenetre.py index a674e8a..f693783 100644 --- a/taillefenetre.py +++ b/taillefenetre.py @@ -54,12 +54,12 @@ def BougerFenetre(event): fenetre.iconbitmap("2048.ico") # Îcone de la fenêtre fenetre.title("2048") # Nom de la fenêtre fenetre.geometry("280x370+100+100") # Taille de la fenêtre - fenetre.configure(background = gris4) # Couleur de fond fond + fenetre.configure(background = GRIS4) # Couleur de fond fond fenetre.overrideredirect(True) fenetre.attributes("-topmost", True) # Fond de la fenêtre au premier plan # Barre titre pour changer la barre windows originale - barreTitre = tkinter.Frame(fenetre, bg = gris3, borderwidth = 2) + barreTitre = tkinter.Frame(fenetre, bg = GRIS3, borderwidth = 2) barreTitre.pack(side = "top", fill = "x") barreTitre.bind("", BougerFenetreCommence) barreTitre.bind("", BougerFenetreArrete) @@ -69,14 +69,14 @@ def BougerFenetre(event): icone = Image.open("2048.ico") icone = icone.resize((16, 16)) icone = ImageTk.PhotoImage(icone) - iconeLabel = tkinter.Label(barreTitre, image = icone, bg = gris3) + iconeLabel = tkinter.Label(barreTitre, image = icone, bg = GRIS3) iconeLabel.pack(side = "left", padx = 5, pady = 5) iconeLabel.bind("", BougerFenetreCommence) iconeLabel.bind("", BougerFenetreArrete) iconeLabel.bind("", BougerFenetre) # Titre dans la barre titre - titre = tkinter.Label(barreTitre, text = " 2048", bg = gris3, fg = blanc) + titre = tkinter.Label(barreTitre, text = " 2048", bg = GRIS3, fg = blanc) titre.pack(side = "left") titre.bind("", BougerFenetreCommence) titre.bind("", BougerFenetreArrete) @@ -84,7 +84,7 @@ def BougerFenetre(event): # Bouton fermer boutonFermer = tkinter.Button( - barreTitre, text = " X ", command = lambda:[fenetre.destroy(), exit()], bg = gris3, fg = blanc, + barreTitre, text = " X ", command = lambda:[fenetre.destroy(), exit()], bg = GRIS3, fg = blanc, activebackground = rouge, activeforeground = blanc, borderwidth = 0, font = ("Arial", 12) ) boutonFermer.pack(side = "right") @@ -92,15 +92,15 @@ def BougerFenetre(event): boutonFermer.bind("", LeaveBoutonFermer) # Barre de menu - barreMenu = tkinter.Frame(fenetre, borderwidth = 3, bg = gris3) + barreMenu = tkinter.Frame(fenetre, borderwidth = 3, bg = GRIS3) barreMenu.pack(side = "top", fill = "x") # Création de l"onglet Menu - menu = tkinter.Menubutton(barreMenu, text = "Menu", bg = gris3, activebackground = gris1, activeforeground = blanc, foreground = blanc) + menu = tkinter.Menubutton(barreMenu, text = "Menu", bg = GRIS3, activebackground = GRIS1, activeforeground = blanc, foreground = blanc) menu.pack(side = "left") # Création d"un menu défilant - menuDeroulant = tkinter.Menu(menu, background = gris2, foreground = blanc, activebackground = bleu3, tearoff = 0) + menuDeroulant = tkinter.Menu(menu, background = GRIS2, foreground = blanc, activebackground = bleu3, tearoff = 0) menuDeroulant.add_command( label = "À propos", command = lambda:[tkinter.messagebox.showinfo( "À propos", "Python-2048\n\nCréé par :\n\n- Ryse93\n\nVersion : 10.0 (S10)", icon = "info" @@ -113,7 +113,7 @@ def BougerFenetre(event): # Image img = tkinter.PhotoImage(file = "2048_logo.png") - imgLabel = tkinter.Label(fenetre, image = img, bg = gris4) + imgLabel = tkinter.Label(fenetre, image = img, bg = GRIS4) imgLabel.pack(pady = 10) # Texte @@ -128,8 +128,8 @@ def BougerFenetre(event): ] variable = tkinter.StringVar(fenetre) menuTaille = tkinter.OptionMenu(fenetre, variable, *OptionList) - menuTaille.config(background = gris3, activebackground = gris3, foreground = blanc, activeforeground = blanc, borderwidth = 0, bd = 0, highlightthickness = 0, width = 20, border = 0) - menuTaille["menu"].config(background = gris3, activebackground = bleu3, foreground = blanc, activeforeground = blanc, borderwidth = 0, bd = 0) + menuTaille.config(background = GRIS3, activebackground = GRIS3, foreground = blanc, activeforeground = blanc, borderwidth = 0, bd = 0, highlightthickness = 0, width = 20, border = 0) + menuTaille["menu"].config(background = GRIS3, activebackground = bleu3, foreground = blanc, activeforeground = blanc, borderwidth = 0, bd = 0) menuTaille.pack(pady = 10) choixpref = False From 6ddac25517274616e75f0b90e88c4345070692d2 Mon Sep 17 00:00:00 2001 From: Ahhj93 <69793084+Ahhj93@users.noreply.github.com> Date: Sat, 1 Jul 2023 13:58:03 +0200 Subject: [PATCH 02/16] Update const --- autresfonctions2048.py | 42 +++++++++++++++++++++--------------------- main.py | 22 +++++++++++----------- taillefenetre.py | 18 +++++++++--------- 3 files changed, 41 insertions(+), 41 deletions(-) diff --git a/autresfonctions2048.py b/autresfonctions2048.py index cffb06c..3cda60e 100644 --- a/autresfonctions2048.py +++ b/autresfonctions2048.py @@ -9,17 +9,17 @@ GRIS3 = "#3C3C3C" GRIS4 = "#1E1E1E" # Bleu -bleu1 = "#1177BB" -bleu2 = "#0E639C" -bleu3 = "#094771" +BLEU1 = "#1177BB" +BLEU2 = "#0E639C" +BLEU3 = "#094771" # Rouge -rouge = "#D71526" +ROUGE = "#D71526" # Blanc -blanc = "#FFFFFF" +BLANC = "#FFFFFF" ## Variable -bgTemp = GRIS3 -fgTemp = blanc +BG_TEMP = GRIS3 +FG_TEMP = BLANC def TuileAleatoire(): """ @@ -62,29 +62,29 @@ def EnterBoutonFermer(event): EnterBoutonFermer(event) Changement de couleur du bouton lorsqu'on passe la souris dessus """ - global bgTemp - global fgTemp - bgTemp = event.widget["bg"] - fgTemp = event.widget["fg"] - event.widget.configure(bg = rouge, fg = blanc) # Changement de couleur du bouton + global BG_TEMP + global FG_TEMP + BG_TEMP = event.widget["bg"] + FG_TEMP = event.widget["fg"] + event.widget.configure(bg = ROUGE, fg = BLANC) # Changement de couleur du bouton def LeaveBoutonFermer(event): """ LeaveBoutonFermer(event) Changement de couleur du bouton lorsqu'on sort la souris de la zone du bouton """ - event.widget.configure(bg = bgTemp, fg = fgTemp) # Changement de couleur du bouton + event.widget.configure(bg = BG_TEMP, fg = FG_TEMP) # Changement de couleur du bouton def EnterBoutonMinimiser(event): """ EnterBoutonMinimiser(event) Changement de couleur du bouton lorsqu'on passe la souris dessus """ - global bgTemp - global fgTemp - bgTemp = event.widget["bg"] - fgTemp = event.widget["fg"] - event.widget.configure(bg = GRIS1, fg = blanc) # Changement de couleur du bouton + global BG_TEMP + global FG_TEMP + BG_TEMP = event.widget["bg"] + FG_TEMP = event.widget["fg"] + event.widget.configure(bg = GRIS1, fg = BLANC) # Changement de couleur du bouton def LeaveBoutonMinimiser(event): """ @@ -92,18 +92,18 @@ def LeaveBoutonMinimiser(event): Changement de couleur du bouton lorsqu'on sort la souris de la zone du bouton """ - event.widget.configure(bg = bgTemp, fg = fgTemp) # Changement de couleur du bouton + event.widget.configure(bg = BG_TEMP, fg = FG_TEMP) # Changement de couleur du bouton def EnterBouton(event): """ EnterBouton(event) Changement de couleur du bouton lorsqu'on passe la souris dessus """ - event.widget.configure(bg = bleu1, fg = blanc) # Changement de couleur du bouton + event.widget.configure(bg = BLEU1, fg = BLANC) # Changement de couleur du bouton def LeaveBouton(event): """ LeaveBouton(event) Changement de couleur du bouton lorsqu'on sort la souris de la zone du bouton """ - event.widget.configure(bg = bleu2, fg = blanc) # Changement de couleur du bouton \ No newline at end of file + event.widget.configure(bg = BLEU2, fg = BLANC) # Changement de couleur du bouton \ No newline at end of file diff --git a/main.py b/main.py index 913f9b1..5085e3b 100644 --- a/main.py +++ b/main.py @@ -61,18 +61,18 @@ def fenetre_focus_in(_event): """ barreTitre.configure(bg=GRIS3) - titre.configure(bg=GRIS3, fg=blanc) + titre.configure(bg=GRIS3, fg=BLANC) boutonFermerMinimiserFrame.configure(bg=GRIS3) - boutonFermer.configure(bg=GRIS3, fg=blanc) - boutonMinimiser.configure(bg=GRIS3, fg=blanc) + boutonFermer.configure(bg=GRIS3, fg=BLANC) + boutonMinimiser.configure(bg=GRIS3, fg=BLANC) label.configure(bg=GRIS3) - menu.configure(bg=GRIS3, fg=blanc) - menuDeroulant.configure(bg=GRIS3, fg=blanc) + menu.configure(bg=GRIS3, fg=BLANC) + menuDeroulant.configure(bg=GRIS3, fg=BLANC) fenetre.configure(bg=GRIS2) - recordLabel.configure(bg=GRIS2, fg=blanc) - nbDeplacementLabel.configure(bg=GRIS2, fg=blanc) - sommeTableauLabel.configure(bg=GRIS2, fg=blanc) - timerLabel.configure(bg=GRIS2, fg=blanc) + recordLabel.configure(bg=GRIS2, fg=BLANC) + nbDeplacementLabel.configure(bg=GRIS2, fg=BLANC) + sommeTableauLabel.configure(bg=GRIS2, fg=BLANC) + timerLabel.configure(bg=GRIS2, fg=BLANC) for i in range(4): for j in range(4): Case[i][j].configure(bg=GRIS2) # type: ignore @@ -571,7 +571,7 @@ def appuyer(event): command=quitter, bg=GRIS3, fg="white", - activebackground=rouge, + activebackground=ROUGE, activeforeground="white", borderwidth=0, font=("Arial", 12), @@ -617,7 +617,7 @@ def appuyer(event): # Création d"un menu défilant menuDeroulant = tkinter.Menu( - menu, background=GRIS2, foreground=blanc, tearoff=0, activebackground=bleu3 + menu, background=GRIS2, foreground=BLANC, tearoff=0, activebackground=BLEU3 ) # Ajouter un checkbutton au menu diff --git a/taillefenetre.py b/taillefenetre.py index f693783..a091dc0 100644 --- a/taillefenetre.py +++ b/taillefenetre.py @@ -76,7 +76,7 @@ def BougerFenetre(event): iconeLabel.bind("", BougerFenetre) # Titre dans la barre titre - titre = tkinter.Label(barreTitre, text = " 2048", bg = GRIS3, fg = blanc) + titre = tkinter.Label(barreTitre, text = " 2048", bg = GRIS3, fg = BLANC) titre.pack(side = "left") titre.bind("", BougerFenetreCommence) titre.bind("", BougerFenetreArrete) @@ -84,8 +84,8 @@ def BougerFenetre(event): # Bouton fermer boutonFermer = tkinter.Button( - barreTitre, text = " X ", command = lambda:[fenetre.destroy(), exit()], bg = GRIS3, fg = blanc, - activebackground = rouge, activeforeground = blanc, borderwidth = 0, font = ("Arial", 12) + barreTitre, text = " X ", command = lambda:[fenetre.destroy(), exit()], bg = GRIS3, fg = BLANC, + activebackground = ROUGE, activeforeground = BLANC, borderwidth = 0, font = ("Arial", 12) ) boutonFermer.pack(side = "right") boutonFermer.bind("", EnterBoutonFermer) @@ -96,11 +96,11 @@ def BougerFenetre(event): barreMenu.pack(side = "top", fill = "x") # Création de l"onglet Menu - menu = tkinter.Menubutton(barreMenu, text = "Menu", bg = GRIS3, activebackground = GRIS1, activeforeground = blanc, foreground = blanc) + menu = tkinter.Menubutton(barreMenu, text = "Menu", bg = GRIS3, activebackground = GRIS1, activeforeground = BLANC, foreground = BLANC) menu.pack(side = "left") # Création d"un menu défilant - menuDeroulant = tkinter.Menu(menu, background = GRIS2, foreground = blanc, activebackground = bleu3, tearoff = 0) + menuDeroulant = tkinter.Menu(menu, background = GRIS2, foreground = BLANC, activebackground = BLEU3, tearoff = 0) menuDeroulant.add_command( label = "À propos", command = lambda:[tkinter.messagebox.showinfo( "À propos", "Python-2048\n\nCréé par :\n\n- Ryse93\n\nVersion : 10.0 (S10)", icon = "info" @@ -117,7 +117,7 @@ def BougerFenetre(event): imgLabel.pack(pady = 10) # Texte - text = tkinter.Label(fenetre, text = f"Veuillez choisir la taille de la fenêtre\nVotre écran a une résolution {fenetre.winfo_screenwidth()}x{fenetre.winfo_screenheight()}", bg = "#1E1E1E", fg = blanc) + text = tkinter.Label(fenetre, text = f"Veuillez choisir la taille de la fenêtre\nVotre écran a une résolution {fenetre.winfo_screenwidth()}x{fenetre.winfo_screenheight()}", bg = "#1E1E1E", fg = BLANC) text.pack() # Création du menu @@ -128,8 +128,8 @@ def BougerFenetre(event): ] variable = tkinter.StringVar(fenetre) menuTaille = tkinter.OptionMenu(fenetre, variable, *OptionList) - menuTaille.config(background = GRIS3, activebackground = GRIS3, foreground = blanc, activeforeground = blanc, borderwidth = 0, bd = 0, highlightthickness = 0, width = 20, border = 0) - menuTaille["menu"].config(background = GRIS3, activebackground = bleu3, foreground = blanc, activeforeground = blanc, borderwidth = 0, bd = 0) + menuTaille.config(background = GRIS3, activebackground = GRIS3, foreground = BLANC, activeforeground = BLANC, borderwidth = 0, bd = 0, highlightthickness = 0, width = 20, border = 0) + menuTaille["menu"].config(background = GRIS3, activebackground = BLEU3, foreground = BLANC, activeforeground = BLANC, borderwidth = 0, bd = 0) menuTaille.pack(pady = 10) choixpref = False @@ -141,7 +141,7 @@ def BougerFenetre(event): variable.set(OptionList[i]) # Bouton pour valider - bouton = tkinter.Button(fenetre, text = " Valider ", command = fenetre.destroy, borderwidth = 0, bg = bleu2, fg = blanc, font = ("Helvetica", 10)) + bouton = tkinter.Button(fenetre, text = " Valider ", command = fenetre.destroy, borderwidth = 0, bg = BLEU2, fg = BLANC, font = ("Helvetica", 10)) bouton.pack() bouton.bind("", EnterBouton) bouton.bind("", LeaveBouton) From 87543657c6ff8692651b03acb4f946b0de59a7d6 Mon Sep 17 00:00:00 2001 From: Ahhj93 <69793084+Ahhj93@users.noreply.github.com> Date: Sat, 1 Jul 2023 14:00:30 +0200 Subject: [PATCH 03/16] Update snake_case --- autresfonctions2048.py | 16 ++++++++-------- main.py | 14 +++++++------- taillefenetre.py | 4 ++-- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/autresfonctions2048.py b/autresfonctions2048.py index 3cda60e..b056cbf 100644 --- a/autresfonctions2048.py +++ b/autresfonctions2048.py @@ -21,9 +21,9 @@ BG_TEMP = GRIS3 FG_TEMP = BLANC -def TuileAleatoire(): +def tuile_aleatoire(): """ - TuileAleatoire() + tuile_aleatoire() Sorties : Deux entiers au hasard entre 0 et 3 """ @@ -32,9 +32,9 @@ def TuileAleatoire(): y = random.randint(0,3) # On génère un entier entre 0 et 3 return x,y # On retourne les deux entiers -def AfficherImage(case, taille): +def afficher_image(case, taille): """ - AfficherImage(case : entier) : tkinter.PhotoImage + afficher_image(case : entier) : tkinter.PhotoImage Entrée : case : numéro de la case Sortie : @@ -57,9 +57,9 @@ def AfficherImage(case, taille): # Retourner l'image return (ImageTk.PhotoImage(imageRedimensionner)) -def EnterBoutonFermer(event): +def enter_bouton_fermer(event): """ - EnterBoutonFermer(event) + enter_bouton_fermer(event) Changement de couleur du bouton lorsqu'on passe la souris dessus """ global BG_TEMP @@ -68,9 +68,9 @@ def EnterBoutonFermer(event): FG_TEMP = event.widget["fg"] event.widget.configure(bg = ROUGE, fg = BLANC) # Changement de couleur du bouton -def LeaveBoutonFermer(event): +def leave_bouton_fermer(event): """ - LeaveBoutonFermer(event) + leave_bouton_fermer(event) Changement de couleur du bouton lorsqu'on sort la souris de la zone du bouton """ event.widget.configure(bg = BG_TEMP, fg = FG_TEMP) # Changement de couleur du bouton diff --git a/main.py b/main.py index 5085e3b..8a7874b 100644 --- a/main.py +++ b/main.py @@ -282,7 +282,7 @@ def afficher_jeu(): for i in range(4): # Création des images for j in range(4): - Img[i][j] = AfficherImage(TableauJeu[i][j], taille) # type: ignore # Création des images + Img[i][j] = afficher_image(TableauJeu[i][j], taille) # type: ignore # Création des images Case[i][j].configure(image=Img[i][j]) # type: ignore Case[i][j].image = Img[i][j] # type: ignore @@ -335,7 +335,7 @@ def recommencer(): # Boucle pour mettre deux cases de 2 dans le tableau caseDebut = 0 while caseDebut < 2: - x, y = TuileAleatoire() + x, y = tuile_aleatoire() if TableauJeu[y][x] == 0: TableauJeu[y][x] = 2 caseDebut += 1 @@ -482,7 +482,7 @@ def appuyer(event): if caseVide and deplacementFait: # Faire apparaître une nouvelle case de 2 while not deplacement: - x, y = TuileAleatoire() + x, y = tuile_aleatoire() if TableauJeu[y][x] == 0: TableauJeu[y][x] = 2 deplacement = True @@ -520,7 +520,7 @@ def appuyer(event): # Boucle pour mettre deux cases de 2 dans le tableau caseDebut = 0 while caseDebut < 2: - x, y = TuileAleatoire() + x, y = tuile_aleatoire() if TableauJeu[y][x] == 0: TableauJeu[y][x] = 2 caseDebut += 1 @@ -577,8 +577,8 @@ def appuyer(event): font=("Arial", 12), ) boutonFermer.grid(row=0, column=1, sticky="ne") -boutonFermer.bind("", EnterBoutonFermer) -boutonFermer.bind("", LeaveBoutonFermer) +boutonFermer.bind("", enter_bouton_fermer) +boutonFermer.bind("", leave_bouton_fermer) boutonMinimiser = tkinter.Button( boutonFermerMinimiserFrame, text=" — ", @@ -665,7 +665,7 @@ def appuyer(event): # Label cases for i in range(4): for j in range(4): - Img[i][j] = AfficherImage(TableauJeu[i][j], taille) # type: ignore # Création des images + Img[i][j] = afficher_image(TableauJeu[i][j], taille) # type: ignore # Création des images Case[i][j] = tkinter.Label(fenetre, image=Img[i][j], bg=GRIS2) # type: ignore # Créer la case # Placer la case dans la grille de la fenêtre Case[i][j].grid(row=i + 6, column=j) # type: ignore diff --git a/taillefenetre.py b/taillefenetre.py index a091dc0..26ac381 100644 --- a/taillefenetre.py +++ b/taillefenetre.py @@ -88,8 +88,8 @@ def BougerFenetre(event): activebackground = ROUGE, activeforeground = BLANC, borderwidth = 0, font = ("Arial", 12) ) boutonFermer.pack(side = "right") - boutonFermer.bind("", EnterBoutonFermer) - boutonFermer.bind("", LeaveBoutonFermer) + boutonFermer.bind("", enter_bouton_fermer) + boutonFermer.bind("", leave_bouton_fermer) # Barre de menu barreMenu = tkinter.Frame(fenetre, borderwidth = 3, bg = GRIS3) From 64e80655caf69423e045bfd5cb165ff1d8456600 Mon Sep 17 00:00:00 2001 From: Ahhj93 <69793084+Ahhj93@users.noreply.github.com> Date: Sat, 1 Jul 2023 14:01:24 +0200 Subject: [PATCH 04/16] Update autresfonctions2048.py --- autresfonctions2048.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/autresfonctions2048.py b/autresfonctions2048.py index b056cbf..a412bf2 100644 --- a/autresfonctions2048.py +++ b/autresfonctions2048.py @@ -40,7 +40,7 @@ def afficher_image(case, taille): Sortie : tkinter.PhotoImage - image de la case """ - + # Ouverture de l'image image = Image.open("Cases/"+str(case)+".png") @@ -50,12 +50,12 @@ def afficher_image(case, taille): taille = 139 elif taille == 100: taille = 95 - + # Redimensionner l'image imageRedimensionner = image.resize((taille, taille)) - + # Retourner l'image - return (ImageTk.PhotoImage(imageRedimensionner)) + return ImageTk.PhotoImage(imageRedimensionner) def enter_bouton_fermer(event): """ From ecf4b707774868a5fd5d9e5581f4fbf465b3f91e Mon Sep 17 00:00:00 2001 From: Ahhj93 <69793084+Ahhj93@users.noreply.github.com> Date: Sat, 1 Jul 2023 14:17:54 +0200 Subject: [PATCH 05/16] Update --- autresfonctions2048.py | 16 ++++----- main.py | 4 +-- taillefenetre.py | 75 ++++++++++++++++++++++++++++-------------- 3 files changed, 60 insertions(+), 35 deletions(-) diff --git a/autresfonctions2048.py b/autresfonctions2048.py index a412bf2..72cbcc8 100644 --- a/autresfonctions2048.py +++ b/autresfonctions2048.py @@ -75,9 +75,9 @@ def leave_bouton_fermer(event): """ event.widget.configure(bg = BG_TEMP, fg = FG_TEMP) # Changement de couleur du bouton -def EnterBoutonMinimiser(event): +def enter_bouton_minimiser(event): """ - EnterBoutonMinimiser(event) + enter_bouton_minimiser(event) Changement de couleur du bouton lorsqu'on passe la souris dessus """ global BG_TEMP @@ -86,24 +86,24 @@ def EnterBoutonMinimiser(event): FG_TEMP = event.widget["fg"] event.widget.configure(bg = GRIS1, fg = BLANC) # Changement de couleur du bouton -def LeaveBoutonMinimiser(event): +def leave_bouton_minimiser(event): """ - LeaveBoutonMinimiser(event) + leave_bouton_minimiser(event) Changement de couleur du bouton lorsqu'on sort la souris de la zone du bouton """ event.widget.configure(bg = BG_TEMP, fg = FG_TEMP) # Changement de couleur du bouton -def EnterBouton(event): +def enter_bouton(event): """ - EnterBouton(event) + enter_bouton(event) Changement de couleur du bouton lorsqu'on passe la souris dessus """ event.widget.configure(bg = BLEU1, fg = BLANC) # Changement de couleur du bouton -def LeaveBouton(event): +def leave_bouton(event): """ - LeaveBouton(event) + leave_bouton(event) Changement de couleur du bouton lorsqu'on sort la souris de la zone du bouton """ event.widget.configure(bg = BLEU2, fg = BLANC) # Changement de couleur du bouton \ No newline at end of file diff --git a/main.py b/main.py index 8a7874b..9c8d992 100644 --- a/main.py +++ b/main.py @@ -591,8 +591,8 @@ def appuyer(event): font=("Arial", 12), ) boutonMinimiser.grid(row=0, column=0, sticky="ne") -boutonMinimiser.bind("", EnterBoutonMinimiser) -boutonMinimiser.bind("", LeaveBoutonMinimiser) +boutonMinimiser.bind("", enter_bouton_minimiser) +boutonMinimiser.bind("", leave_bouton_minimiser) # Icone dans la barre titre icone = Image.open("2048.ico") diff --git a/taillefenetre.py b/taillefenetre.py index 26ac381..27e21d5 100644 --- a/taillefenetre.py +++ b/taillefenetre.py @@ -14,27 +14,37 @@ def TailleFenetre(): Retourne la taille de la fenêtre """ - def Sigint_handler(signal, frame): + def sigint_handler(_signal, _frame): """ - Sigint_handler(signal, frame) + sigint_handler(_signal, _frame) Ferme la fenetre sans erreur lors du KeyboardInterrupt """ fenetre.destroy() exit() - def BougerFenetreCommence(event): + def bouger_fenetre_commence(event): + """ + bouger_fenetre_commence(event) + Fonction qui permet de bouger la fenêtre + Entrée : + event : événement + """ global x, y # On récupère les variables x et y x = event.x # On récupère la position de la souris en x y = event.y # On récupère la position de la souris en y - def BougerFenetreArrete(event): + def bouger_fenetre_arrete(_event): + """ + bouger_fenetre_arrete(_event) + Fonction qui permet de bouger la fenêtre + """ global x, y # On récupère les variables x et y x = None # On réinitialise x y = None # On réinitialise y - def BougerFenetre(event): + def bouger_fenetre(event): """ - BougerFenetre(event) + bouger_fenetre(event) Entrée : event : événement Sortie : @@ -61,9 +71,9 @@ def BougerFenetre(event): # Barre titre pour changer la barre windows originale barreTitre = tkinter.Frame(fenetre, bg = GRIS3, borderwidth = 2) barreTitre.pack(side = "top", fill = "x") - barreTitre.bind("", BougerFenetreCommence) - barreTitre.bind("", BougerFenetreArrete) - barreTitre.bind("", BougerFenetre) + barreTitre.bind("", bouger_fenetre_commence) + barreTitre.bind("", bouger_fenetre_arrete) + barreTitre.bind("", bouger_fenetre) # Icone dans la barre titre icone = Image.open("2048.ico") @@ -71,16 +81,16 @@ def BougerFenetre(event): icone = ImageTk.PhotoImage(icone) iconeLabel = tkinter.Label(barreTitre, image = icone, bg = GRIS3) iconeLabel.pack(side = "left", padx = 5, pady = 5) - iconeLabel.bind("", BougerFenetreCommence) - iconeLabel.bind("", BougerFenetreArrete) - iconeLabel.bind("", BougerFenetre) + iconeLabel.bind("", bouger_fenetre_commence) + iconeLabel.bind("", bouger_fenetre_arrete) + iconeLabel.bind("", bouger_fenetre) # Titre dans la barre titre titre = tkinter.Label(barreTitre, text = " 2048", bg = GRIS3, fg = BLANC) titre.pack(side = "left") - titre.bind("", BougerFenetreCommence) - titre.bind("", BougerFenetreArrete) - titre.bind("", BougerFenetre) + titre.bind("", bouger_fenetre_commence) + titre.bind("", bouger_fenetre_arrete) + titre.bind("", bouger_fenetre) # Bouton fermer boutonFermer = tkinter.Button( @@ -117,7 +127,12 @@ def BougerFenetre(event): imgLabel.pack(pady = 10) # Texte - text = tkinter.Label(fenetre, text = f"Veuillez choisir la taille de la fenêtre\nVotre écran a une résolution {fenetre.winfo_screenwidth()}x{fenetre.winfo_screenheight()}", bg = "#1E1E1E", fg = BLANC) + text = tkinter.Label( + fenetre, + text = f"Veuillez choisir la taille de la fenêtre\nVotre écran a une résolution {fenetre.winfo_screenwidth()}x{fenetre.winfo_screenheight()}", + bg = "#1E1E1E", + fg = BLANC + ) text.pack() # Création du menu @@ -128,29 +143,39 @@ def BougerFenetre(event): ] variable = tkinter.StringVar(fenetre) menuTaille = tkinter.OptionMenu(fenetre, variable, *OptionList) - menuTaille.config(background = GRIS3, activebackground = GRIS3, foreground = BLANC, activeforeground = BLANC, borderwidth = 0, bd = 0, highlightthickness = 0, width = 20, border = 0) - menuTaille["menu"].config(background = GRIS3, activebackground = BLEU3, foreground = BLANC, activeforeground = BLANC, borderwidth = 0, bd = 0) + menuTaille.config( + background = GRIS3, activebackground = GRIS3, foreground = BLANC, activeforeground = BLANC, + borderwidth = 0, bd = 0, highlightthickness = 0, width = 20, border = 0 + ) + menuTaille["menu"].config( + background = GRIS3, activebackground = BLEU3, foreground = BLANC,activeforeground = BLANC, + borderwidth = 0, bd = 0 + ) menuTaille.pack(pady = 10) choixpref = False - for i in range(len(OptionList)): - if int(OptionList[i].split("x")[0]) > fenetre.winfo_screenwidth() or int(OptionList[i].split("x")[1]) > fenetre.winfo_screenheight(): - menuTaille["menu"].entryconfig(OptionList[i], state = "disabled") + for option in OptionList: + if int(option.split("x")[0]) > fenetre.winfo_screenwidth() \ + or int(option.split("x")[1]) > fenetre.winfo_screenheight(): + + menuTaille["menu"].entryconfig(option, state = "disabled") + elif not choixpref: + choixpref = True - variable.set(OptionList[i]) + variable.set(option) # Bouton pour valider bouton = tkinter.Button(fenetre, text = " Valider ", command = fenetre.destroy, borderwidth = 0, bg = BLEU2, fg = BLANC, font = ("Helvetica", 10)) bouton.pack() - bouton.bind("", EnterBouton) - bouton.bind("", LeaveBouton) + bouton.bind("", enter_bouton) + bouton.bind("", leave_bouton) # Fermer le programme lors de lors du click de fermeture de la fenêtre fenetre.protocol("WM_DELETE_WINDOW", lambda:[fenetre.destroy(), exit()]) # Détecte KeyboardInterrupt - signal.signal(signal.SIGINT, Sigint_handler) + signal.signal(signal.SIGINT, sigint_handler) # Exécution de la fenêtre fenetre.mainloop() From 5de7f91a53f293ec0f2f173fd7dbf9a113018043 Mon Sep 17 00:00:00 2001 From: Ahhj93 <69793084+Ahhj93@users.noreply.github.com> Date: Sat, 1 Jul 2023 14:30:03 +0200 Subject: [PATCH 06/16] Update --- autresfonctions2048.py => autres_fonctions.py | 0 main.py | 20 +- record.txt | 2 +- taille_fenetre.py | 245 ++++++++++++++++++ taillefenetre.py | 184 ------------- 5 files changed, 263 insertions(+), 188 deletions(-) rename autresfonctions2048.py => autres_fonctions.py (100%) create mode 100644 taille_fenetre.py delete mode 100644 taillefenetre.py diff --git a/autresfonctions2048.py b/autres_fonctions.py similarity index 100% rename from autresfonctions2048.py rename to autres_fonctions.py diff --git a/main.py b/main.py index 9c8d992..0e4cf75 100644 --- a/main.py +++ b/main.py @@ -14,8 +14,22 @@ # Importation des fichiers .py du dossier python import mouvement -from autresfonctions2048 import * -from taillefenetre import * +from autres_fonctions import ( + GRIS1, + GRIS2, + GRIS3, + GRIS4, + BLEU3, + ROUGE, + BLANC, + enter_bouton_fermer, + leave_bouton_fermer, + tuile_aleatoire, + enter_bouton_minimiser, + leave_bouton_minimiser, + afficher_image, +) +from taille_fenetre import taille_fenetre # Start- Discord RPC try: @@ -526,7 +540,7 @@ def appuyer(event): caseDebut += 1 # Lancer la fonction TailleFenêtre pour avoir la taille de la fenêtre qu'on demande à l'utilisateur -taille = TailleFenetre() +taille = taille_fenetre() # Lancer la fenêtre Tkinter root = tkinter.Tk() diff --git a/record.txt b/record.txt index 6c14b48..bf0d87a 100644 --- a/record.txt +++ b/record.txt @@ -1 +1 @@ -2056 \ No newline at end of file +4 \ No newline at end of file diff --git a/taille_fenetre.py b/taille_fenetre.py new file mode 100644 index 0000000..2c17511 --- /dev/null +++ b/taille_fenetre.py @@ -0,0 +1,245 @@ +# Importation des bibliothèques +import tkinter +import tkinter.messagebox +import signal +from PIL import Image, ImageTk + +# Importation des fichiers .py du dossier python +from autresfonctions2048 import ( + GRIS1, + GRIS2, + GRIS3, + GRIS4, + BLEU2, + BLEU3, + ROUGE, + BLANC, + enter_bouton_fermer, + leave_bouton_fermer, + enter_bouton, + leave_bouton, +) + + +def taille_fenetre(): + """ + taille_fenetre() + Sortie : + Retourne la taille de la fenêtre + """ + + def sigint_handler(_signal, _frame): + """ + sigint_handler(_signal, _frame) + Ferme la fenetre sans erreur lors du KeyboardInterrupt + """ + fenetre.destroy() + exit() + + def bouger_fenetre_commence(event): + """ + bouger_fenetre_commence(event) + Fonction qui permet de bouger la fenêtre + Entrée : + event : événement + """ + global x, y # On récupère les variables x et y + x = event.x # On récupère la position de la souris en x + y = event.y # On récupère la position de la souris en y + + def bouger_fenetre_arrete(_event): + """ + bouger_fenetre_arrete(_event) + Fonction qui permet de bouger la fenêtre + """ + global x, y # On récupère les variables x et y + x = None # On réinitialise x + y = None # On réinitialise y + + def bouger_fenetre(event): + """ + bouger_fenetre(event) + Entrée : + event : événement + Sortie : + Bouge la fenêtre + """ + global x, y # On récupère les variables x et y + deltax = ( + event.x - x + ) # On calcule la différence entre la position de la souris et la position de la souris au début du déplacement + deltay = ( + event.y - y + ) # On calcule la différence entre la position de la souris et la position de la souris au début du déplacement + ax = ( + fenetre.winfo_x() + deltax + ) # On calcule la nouvelle position de la fenêtre en fonction de la différence entre la position de la souris et la position de la souris au début du déplacement + ay = ( + fenetre.winfo_y() + deltay + ) # On calcule la nouvelle position de la fenêtre en fonction de la différence entre la position de la souris et la position de la souris au début du déplacement + fenetre.geometry(f"+{ax}+{ay}") # On déplace la fenêtre + + # Lancer la fenêtre Tkinter + fenetre = tkinter.Tk() + + # Paramètre de la fenêtre + fenetre.iconbitmap("2048.ico") # Îcone de la fenêtre + fenetre.title("2048") # Nom de la fenêtre + fenetre.geometry("280x370+100+100") # Taille de la fenêtre + fenetre.configure(background=GRIS4) # Couleur de fond fond + fenetre.overrideredirect(True) + fenetre.attributes("-topmost", True) # Fond de la fenêtre au premier plan + + # Barre titre pour changer la barre windows originale + barreTitre = tkinter.Frame(fenetre, bg=GRIS3, borderwidth=2) + barreTitre.pack(side="top", fill="x") + barreTitre.bind("", bouger_fenetre_commence) + barreTitre.bind("", bouger_fenetre_arrete) + barreTitre.bind("", bouger_fenetre) + + # Icone dans la barre titre + icone = Image.open("2048.ico") + icone = icone.resize((16, 16)) + icone = ImageTk.PhotoImage(icone) + iconeLabel = tkinter.Label(barreTitre, image=icone, bg=GRIS3) + iconeLabel.pack(side="left", padx=5, pady=5) + iconeLabel.bind("", bouger_fenetre_commence) + iconeLabel.bind("", bouger_fenetre_arrete) + iconeLabel.bind("", bouger_fenetre) + + # Titre dans la barre titre + titre = tkinter.Label(barreTitre, text=" 2048", bg=GRIS3, fg=BLANC) + titre.pack(side="left") + titre.bind("", bouger_fenetre_commence) + titre.bind("", bouger_fenetre_arrete) + titre.bind("", bouger_fenetre) + + # Bouton fermer + boutonFermer = tkinter.Button( + barreTitre, + text=" X ", + command=lambda: [fenetre.destroy(), exit()], + bg=GRIS3, + fg=BLANC, + activebackground=ROUGE, + activeforeground=BLANC, + borderwidth=0, + font=("Arial", 12), + ) + boutonFermer.pack(side="right") + boutonFermer.bind("", enter_bouton_fermer) + boutonFermer.bind("", leave_bouton_fermer) + + # Barre de menu + barreMenu = tkinter.Frame(fenetre, borderwidth=3, bg=GRIS3) + barreMenu.pack(side="top", fill="x") + + # Création de l"onglet Menu + menu = tkinter.Menubutton( + barreMenu, + text="Menu", + bg=GRIS3, + activebackground=GRIS1, + activeforeground=BLANC, + foreground=BLANC, + ) + menu.pack(side="left") + + # Création d"un menu défilant + menuDeroulant = tkinter.Menu( + menu, background=GRIS2, foreground=BLANC, activebackground=BLEU3, tearoff=0 + ) + menuDeroulant.add_command( + label="À propos", + command=lambda: [ + tkinter.messagebox.showinfo( + "À propos", + "Python-2048\n\nCréé par :\n\n- Ryse93\n\nVersion : 10.0 (S10)", + icon="info", + ) + ], + ) + + # Attribution du menu déroulant au menu Affichage + menu.configure(menu=menuDeroulant) + + # Image + img = tkinter.PhotoImage(file="2048_logo.png") + imgLabel = tkinter.Label(fenetre, image=img, bg=GRIS4) + imgLabel.pack(pady=10) + + # Texte + text = tkinter.Label( + fenetre, + text=f"Veuillez choisir la taille de la fenêtre\nVotre écran a une résolution {fenetre.winfo_screenwidth()}x{fenetre.winfo_screenheight()}", + bg="#1E1E1E", + fg=BLANC, + ) + text.pack() + + # Création du menu + option_list = [ + "800x876", + "600x676", + "400x476", + ] + variable = tkinter.StringVar(fenetre) + menu_taille = tkinter.OptionMenu(fenetre, variable, *option_list) + menu_taille.config( + background=GRIS3, + activebackground=GRIS3, + foreground=BLANC, + activeforeground=BLANC, + borderwidth=0, + bd=0, + highlightthickness=0, + width=20, + border=0, + ) + menu_taille["menu"].config( + background=GRIS3, + activebackground=BLEU3, + foreground=BLANC, + activeforeground=BLANC, + borderwidth=0, + bd=0, + ) + menu_taille.pack(pady=10) + + choixpref = False + for option in option_list: + if ( + int(option.split("x")[0]) > fenetre.winfo_screenwidth() + or int(option.split("x")[1]) > fenetre.winfo_screenheight() + ): + menu_taille["menu"].entryconfig(option, state="disabled") + + elif not choixpref: + choixpref = True + variable.set(option) + + # Bouton pour valider + bouton = tkinter.Button( + fenetre, + text=" Valider ", + command=fenetre.destroy, + borderwidth=0, + bg=BLEU2, + fg=BLANC, + font=("Helvetica", 10), + ) + bouton.pack() + bouton.bind("", enter_bouton) + bouton.bind("", leave_bouton) + + # Fermer le programme lors de lors du click de fermeture de la fenêtre + fenetre.protocol("WM_DELETE_WINDOW", lambda: [fenetre.destroy(), exit()]) + + # Détecte KeyboardInterrupt + signal.signal(signal.SIGINT, sigint_handler) + + # Exécution de la fenêtre + fenetre.mainloop() + + # Récupération de la taille + return int(int(variable.get().split("x")[0]) / 4) diff --git a/taillefenetre.py b/taillefenetre.py deleted file mode 100644 index 27e21d5..0000000 --- a/taillefenetre.py +++ /dev/null @@ -1,184 +0,0 @@ -# Importation des bibliothèques -import tkinter -import tkinter.messagebox -import signal -from PIL import Image, ImageTk - -# Importation des fichiers .py du dossier python -from autresfonctions2048 import * - -def TailleFenetre(): - """ - TailleFenetre() - Sortie : - Retourne la taille de la fenêtre - """ - - def sigint_handler(_signal, _frame): - """ - sigint_handler(_signal, _frame) - Ferme la fenetre sans erreur lors du KeyboardInterrupt - """ - fenetre.destroy() - exit() - - def bouger_fenetre_commence(event): - """ - bouger_fenetre_commence(event) - Fonction qui permet de bouger la fenêtre - Entrée : - event : événement - """ - global x, y # On récupère les variables x et y - x = event.x # On récupère la position de la souris en x - y = event.y # On récupère la position de la souris en y - - def bouger_fenetre_arrete(_event): - """ - bouger_fenetre_arrete(_event) - Fonction qui permet de bouger la fenêtre - """ - global x, y # On récupère les variables x et y - x = None # On réinitialise x - y = None # On réinitialise y - - def bouger_fenetre(event): - """ - bouger_fenetre(event) - Entrée : - event : événement - Sortie : - Bouge la fenêtre - """ - global x, y # On récupère les variables x et y - deltax = event.x - x # On calcule la différence entre la position de la souris et la position de la souris au début du déplacement - deltay = event.y - y # On calcule la différence entre la position de la souris et la position de la souris au début du déplacement - ax = fenetre.winfo_x() + deltax # On calcule la nouvelle position de la fenêtre en fonction de la différence entre la position de la souris et la position de la souris au début du déplacement - ay = fenetre.winfo_y() + deltay # On calcule la nouvelle position de la fenêtre en fonction de la différence entre la position de la souris et la position de la souris au début du déplacement - fenetre.geometry(f"+{ax}+{ay}") # On déplace la fenêtre - - # Lancer la fenêtre Tkinter - fenetre = tkinter.Tk() - - # Paramètre de la fenêtre - fenetre.iconbitmap("2048.ico") # Îcone de la fenêtre - fenetre.title("2048") # Nom de la fenêtre - fenetre.geometry("280x370+100+100") # Taille de la fenêtre - fenetre.configure(background = GRIS4) # Couleur de fond fond - fenetre.overrideredirect(True) - fenetre.attributes("-topmost", True) # Fond de la fenêtre au premier plan - - # Barre titre pour changer la barre windows originale - barreTitre = tkinter.Frame(fenetre, bg = GRIS3, borderwidth = 2) - barreTitre.pack(side = "top", fill = "x") - barreTitre.bind("", bouger_fenetre_commence) - barreTitre.bind("", bouger_fenetre_arrete) - barreTitre.bind("", bouger_fenetre) - - # Icone dans la barre titre - icone = Image.open("2048.ico") - icone = icone.resize((16, 16)) - icone = ImageTk.PhotoImage(icone) - iconeLabel = tkinter.Label(barreTitre, image = icone, bg = GRIS3) - iconeLabel.pack(side = "left", padx = 5, pady = 5) - iconeLabel.bind("", bouger_fenetre_commence) - iconeLabel.bind("", bouger_fenetre_arrete) - iconeLabel.bind("", bouger_fenetre) - - # Titre dans la barre titre - titre = tkinter.Label(barreTitre, text = " 2048", bg = GRIS3, fg = BLANC) - titre.pack(side = "left") - titre.bind("", bouger_fenetre_commence) - titre.bind("", bouger_fenetre_arrete) - titre.bind("", bouger_fenetre) - - # Bouton fermer - boutonFermer = tkinter.Button( - barreTitre, text = " X ", command = lambda:[fenetre.destroy(), exit()], bg = GRIS3, fg = BLANC, - activebackground = ROUGE, activeforeground = BLANC, borderwidth = 0, font = ("Arial", 12) - ) - boutonFermer.pack(side = "right") - boutonFermer.bind("", enter_bouton_fermer) - boutonFermer.bind("", leave_bouton_fermer) - - # Barre de menu - barreMenu = tkinter.Frame(fenetre, borderwidth = 3, bg = GRIS3) - barreMenu.pack(side = "top", fill = "x") - - # Création de l"onglet Menu - menu = tkinter.Menubutton(barreMenu, text = "Menu", bg = GRIS3, activebackground = GRIS1, activeforeground = BLANC, foreground = BLANC) - menu.pack(side = "left") - - # Création d"un menu défilant - menuDeroulant = tkinter.Menu(menu, background = GRIS2, foreground = BLANC, activebackground = BLEU3, tearoff = 0) - menuDeroulant.add_command( - label = "À propos", command = lambda:[tkinter.messagebox.showinfo( - "À propos", "Python-2048\n\nCréé par :\n\n- Ryse93\n\nVersion : 10.0 (S10)", icon = "info" - ) - ] - ) - - # Attribution du menu déroulant au menu Affichage - menu.configure(menu = menuDeroulant) - - # Image - img = tkinter.PhotoImage(file = "2048_logo.png") - imgLabel = tkinter.Label(fenetre, image = img, bg = GRIS4) - imgLabel.pack(pady = 10) - - # Texte - text = tkinter.Label( - fenetre, - text = f"Veuillez choisir la taille de la fenêtre\nVotre écran a une résolution {fenetre.winfo_screenwidth()}x{fenetre.winfo_screenheight()}", - bg = "#1E1E1E", - fg = BLANC - ) - text.pack() - - # Création du menu - OptionList = [ - "800x876", - "600x676", - "400x476", - ] - variable = tkinter.StringVar(fenetre) - menuTaille = tkinter.OptionMenu(fenetre, variable, *OptionList) - menuTaille.config( - background = GRIS3, activebackground = GRIS3, foreground = BLANC, activeforeground = BLANC, - borderwidth = 0, bd = 0, highlightthickness = 0, width = 20, border = 0 - ) - menuTaille["menu"].config( - background = GRIS3, activebackground = BLEU3, foreground = BLANC,activeforeground = BLANC, - borderwidth = 0, bd = 0 - ) - menuTaille.pack(pady = 10) - - choixpref = False - for option in OptionList: - if int(option.split("x")[0]) > fenetre.winfo_screenwidth() \ - or int(option.split("x")[1]) > fenetre.winfo_screenheight(): - - menuTaille["menu"].entryconfig(option, state = "disabled") - - elif not choixpref: - - choixpref = True - variable.set(option) - - # Bouton pour valider - bouton = tkinter.Button(fenetre, text = " Valider ", command = fenetre.destroy, borderwidth = 0, bg = BLEU2, fg = BLANC, font = ("Helvetica", 10)) - bouton.pack() - bouton.bind("", enter_bouton) - bouton.bind("", leave_bouton) - - # Fermer le programme lors de lors du click de fermeture de la fenêtre - fenetre.protocol("WM_DELETE_WINDOW", lambda:[fenetre.destroy(), exit()]) - - # Détecte KeyboardInterrupt - signal.signal(signal.SIGINT, sigint_handler) - - # Exécution de la fenêtre - fenetre.mainloop() - - # Récupération de la taille - return int(int(variable.get().split("x")[0])/4) From 3174867655e4185483800aa57876fb619544ef06 Mon Sep 17 00:00:00 2001 From: Ahhj93 <69793084+Ahhj93@users.noreply.github.com> Date: Sat, 1 Jul 2023 14:33:55 +0200 Subject: [PATCH 07/16] Update taille_fenetre.py --- taille_fenetre.py | 50 +++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/taille_fenetre.py b/taille_fenetre.py index 2c17511..288b4bb 100644 --- a/taille_fenetre.py +++ b/taille_fenetre.py @@ -5,7 +5,7 @@ from PIL import Image, ImageTk # Importation des fichiers .py du dossier python -from autresfonctions2048 import ( +from autres_fonctions import ( GRIS1, GRIS2, GRIS3, @@ -91,32 +91,32 @@ def bouger_fenetre(event): fenetre.attributes("-topmost", True) # Fond de la fenêtre au premier plan # Barre titre pour changer la barre windows originale - barreTitre = tkinter.Frame(fenetre, bg=GRIS3, borderwidth=2) - barreTitre.pack(side="top", fill="x") - barreTitre.bind("", bouger_fenetre_commence) - barreTitre.bind("", bouger_fenetre_arrete) - barreTitre.bind("", bouger_fenetre) + barre_titre = tkinter.Frame(fenetre, bg=GRIS3, borderwidth=2) + barre_titre.pack(side="top", fill="x") + barre_titre.bind("", bouger_fenetre_commence) + barre_titre.bind("", bouger_fenetre_arrete) + barre_titre.bind("", bouger_fenetre) # Icone dans la barre titre icone = Image.open("2048.ico") icone = icone.resize((16, 16)) icone = ImageTk.PhotoImage(icone) - iconeLabel = tkinter.Label(barreTitre, image=icone, bg=GRIS3) - iconeLabel.pack(side="left", padx=5, pady=5) - iconeLabel.bind("", bouger_fenetre_commence) - iconeLabel.bind("", bouger_fenetre_arrete) - iconeLabel.bind("", bouger_fenetre) + icone_label = tkinter.Label(barre_titre, image=icone, bg=GRIS3) + icone_label.pack(side="left", padx=5, pady=5) + icone_label.bind("", bouger_fenetre_commence) + icone_label.bind("", bouger_fenetre_arrete) + icone_label.bind("", bouger_fenetre) # Titre dans la barre titre - titre = tkinter.Label(barreTitre, text=" 2048", bg=GRIS3, fg=BLANC) + titre = tkinter.Label(barre_titre, text=" 2048", bg=GRIS3, fg=BLANC) titre.pack(side="left") titre.bind("", bouger_fenetre_commence) titre.bind("", bouger_fenetre_arrete) titre.bind("", bouger_fenetre) # Bouton fermer - boutonFermer = tkinter.Button( - barreTitre, + bouton_fermer = tkinter.Button( + barre_titre, text=" X ", command=lambda: [fenetre.destroy(), exit()], bg=GRIS3, @@ -126,17 +126,17 @@ def bouger_fenetre(event): borderwidth=0, font=("Arial", 12), ) - boutonFermer.pack(side="right") - boutonFermer.bind("", enter_bouton_fermer) - boutonFermer.bind("", leave_bouton_fermer) + bouton_fermer.pack(side="right") + bouton_fermer.bind("", enter_bouton_fermer) + bouton_fermer.bind("", leave_bouton_fermer) # Barre de menu - barreMenu = tkinter.Frame(fenetre, borderwidth=3, bg=GRIS3) - barreMenu.pack(side="top", fill="x") + barre_menu = tkinter.Frame(fenetre, borderwidth=3, bg=GRIS3) + barre_menu.pack(side="top", fill="x") # Création de l"onglet Menu menu = tkinter.Menubutton( - barreMenu, + barre_menu, text="Menu", bg=GRIS3, activebackground=GRIS1, @@ -146,10 +146,10 @@ def bouger_fenetre(event): menu.pack(side="left") # Création d"un menu défilant - menuDeroulant = tkinter.Menu( + menu_deroulant = tkinter.Menu( menu, background=GRIS2, foreground=BLANC, activebackground=BLEU3, tearoff=0 ) - menuDeroulant.add_command( + menu_deroulant.add_command( label="À propos", command=lambda: [ tkinter.messagebox.showinfo( @@ -161,12 +161,12 @@ def bouger_fenetre(event): ) # Attribution du menu déroulant au menu Affichage - menu.configure(menu=menuDeroulant) + menu.configure(menu=menu_deroulant) # Image img = tkinter.PhotoImage(file="2048_logo.png") - imgLabel = tkinter.Label(fenetre, image=img, bg=GRIS4) - imgLabel.pack(pady=10) + img_label = tkinter.Label(fenetre, image=img, bg=GRIS4) + img_label.pack(pady=10) # Texte text = tkinter.Label( From 8c5352c8e7e2ef0cc3d3febf21163c463eb36498 Mon Sep 17 00:00:00 2001 From: Ahhj93 <69793084+Ahhj93@users.noreply.github.com> Date: Sat, 1 Jul 2023 14:35:49 +0200 Subject: [PATCH 08/16] Update autres_fonctions.py --- autres_fonctions.py | 70 +++++++++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 31 deletions(-) diff --git a/autres_fonctions.py b/autres_fonctions.py index 72cbcc8..fbac8e1 100644 --- a/autres_fonctions.py +++ b/autres_fonctions.py @@ -3,7 +3,7 @@ from PIL import Image, ImageTk ##Couleur -#Gris +# Gris GRIS1 = "#505050" GRIS2 = "#4D4D4D" GRIS3 = "#3C3C3C" @@ -21,28 +21,30 @@ BG_TEMP = GRIS3 FG_TEMP = BLANC + def tuile_aleatoire(): """ - tuile_aleatoire() - Sorties : - Deux entiers au hasard entre 0 et 3 + tuile_aleatoire() + Sorties : + Deux entiers au hasard entre 0 et 3 """ - x = random.randint(0,3) # On génère un entier entre 0 et 3 - y = random.randint(0,3) # On génère un entier entre 0 et 3 - return x,y # On retourne les deux entiers + random_x = random.randint(0, 3) # On génère un entier entre 0 et 3 + random_y = random.randint(0, 3) # On génère un entier entre 0 et 3 + return random_x, random_y # On retourne les deux entiers + def afficher_image(case, taille): """ - afficher_image(case : entier) : tkinter.PhotoImage - Entrée : - case : numéro de la case - Sortie : - tkinter.PhotoImage - image de la case + afficher_image(case : entier) : tkinter.PhotoImage + Entrée : + case : numéro de la case + Sortie : + tkinter.PhotoImage - image de la case """ # Ouverture de l'image - image = Image.open("Cases/"+str(case)+".png") + image = Image.open("Cases/" + str(case) + ".png") if taille == 200: taille = 189 @@ -57,53 +59,59 @@ def afficher_image(case, taille): # Retourner l'image return ImageTk.PhotoImage(imageRedimensionner) + def enter_bouton_fermer(event): """ - enter_bouton_fermer(event) - Changement de couleur du bouton lorsqu'on passe la souris dessus + enter_bouton_fermer(event) + Changement de couleur du bouton lorsqu'on passe la souris dessus """ global BG_TEMP global FG_TEMP BG_TEMP = event.widget["bg"] FG_TEMP = event.widget["fg"] - event.widget.configure(bg = ROUGE, fg = BLANC) # Changement de couleur du bouton + event.widget.configure(bg=ROUGE, fg=BLANC) # Changement de couleur du bouton + def leave_bouton_fermer(event): """ - leave_bouton_fermer(event) - Changement de couleur du bouton lorsqu'on sort la souris de la zone du bouton + leave_bouton_fermer(event) + Changement de couleur du bouton lorsqu'on sort la souris de la zone du bouton """ - event.widget.configure(bg = BG_TEMP, fg = FG_TEMP) # Changement de couleur du bouton + event.widget.configure(bg=BG_TEMP, fg=FG_TEMP) # Changement de couleur du bouton + def enter_bouton_minimiser(event): """ - enter_bouton_minimiser(event) - Changement de couleur du bouton lorsqu'on passe la souris dessus + enter_bouton_minimiser(event) + Changement de couleur du bouton lorsqu'on passe la souris dessus """ global BG_TEMP global FG_TEMP BG_TEMP = event.widget["bg"] FG_TEMP = event.widget["fg"] - event.widget.configure(bg = GRIS1, fg = BLANC) # Changement de couleur du bouton + event.widget.configure(bg=GRIS1, fg=BLANC) # Changement de couleur du bouton + def leave_bouton_minimiser(event): """ - leave_bouton_minimiser(event) - Changement de couleur du bouton lorsqu'on sort la souris de la zone du bouton + leave_bouton_minimiser(event) + Changement de couleur du bouton lorsqu'on sort la souris de la zone du bouton """ - event.widget.configure(bg = BG_TEMP, fg = FG_TEMP) # Changement de couleur du bouton + event.widget.configure(bg=BG_TEMP, fg=FG_TEMP) # Changement de couleur du bouton + def enter_bouton(event): """ - enter_bouton(event) - Changement de couleur du bouton lorsqu'on passe la souris dessus + enter_bouton(event) + Changement de couleur du bouton lorsqu'on passe la souris dessus """ - event.widget.configure(bg = BLEU1, fg = BLANC) # Changement de couleur du bouton + event.widget.configure(bg=BLEU1, fg=BLANC) # Changement de couleur du bouton + def leave_bouton(event): """ - leave_bouton(event) - Changement de couleur du bouton lorsqu'on sort la souris de la zone du bouton + leave_bouton(event) + Changement de couleur du bouton lorsqu'on sort la souris de la zone du bouton """ - event.widget.configure(bg = BLEU2, fg = BLANC) # Changement de couleur du bouton \ No newline at end of file + event.widget.configure(bg=BLEU2, fg=BLANC) # Changement de couleur du bouton From e738042a994f1a6cab964e30fdcfdc2657e90d4b Mon Sep 17 00:00:00 2001 From: Ahhj93 <69793084+Ahhj93@users.noreply.github.com> Date: Sat, 1 Jul 2023 14:37:25 +0200 Subject: [PATCH 09/16] Update autres_fonctions.py --- autres_fonctions.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/autres_fonctions.py b/autres_fonctions.py index fbac8e1..5814bbb 100644 --- a/autres_fonctions.py +++ b/autres_fonctions.py @@ -54,10 +54,10 @@ def afficher_image(case, taille): taille = 95 # Redimensionner l'image - imageRedimensionner = image.resize((taille, taille)) + image_redimensionner = image.resize((taille, taille)) # Retourner l'image - return ImageTk.PhotoImage(imageRedimensionner) + return ImageTk.PhotoImage(image_redimensionner) def enter_bouton_fermer(event): From ff1f767e23f0175caba80d2ab862a52a3808c2b6 Mon Sep 17 00:00:00 2001 From: Ahhj93 <69793084+Ahhj93@users.noreply.github.com> Date: Sat, 1 Jul 2023 14:42:31 +0200 Subject: [PATCH 10/16] Update autres_fonctions.py --- autres_fonctions.py | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/autres_fonctions.py b/autres_fonctions.py index 5814bbb..4adb6d9 100644 --- a/autres_fonctions.py +++ b/autres_fonctions.py @@ -1,46 +1,47 @@ # Importation des bibliothèques import random +import tkinter from PIL import Image, ImageTk ##Couleur # Gris -GRIS1 = "#505050" -GRIS2 = "#4D4D4D" -GRIS3 = "#3C3C3C" -GRIS4 = "#1E1E1E" +GRIS1: str = "#505050" +GRIS2: str = "#4D4D4D" +GRIS3: str = "#3C3C3C" +GRIS4: str = "#1E1E1E" # Bleu -BLEU1 = "#1177BB" -BLEU2 = "#0E639C" -BLEU3 = "#094771" +BLEU1: str = "#1177BB" +BLEU2: str = "#0E639C" +BLEU3: str = "#094771" # Rouge -ROUGE = "#D71526" +ROUGE: str = "#D71526" # Blanc -BLANC = "#FFFFFF" +BLANC: str = "#FFFFFF" ## Variable -BG_TEMP = GRIS3 -FG_TEMP = BLANC +BG_TEMP: str = GRIS3 +FG_TEMP: str = BLANC -def tuile_aleatoire(): +def tuile_aleatoire() -> tuple[int, int]: """ tuile_aleatoire() Sorties : Deux entiers au hasard entre 0 et 3 """ - random_x = random.randint(0, 3) # On génère un entier entre 0 et 3 - random_y = random.randint(0, 3) # On génère un entier entre 0 et 3 + random_x: int = random.randint(0, 3) # On génère un entier entre 0 et 3 + random_y: int = random.randint(0, 3) # On génère un entier entre 0 et 3 return random_x, random_y # On retourne les deux entiers -def afficher_image(case, taille): +def afficher_image(case: int, taille: int) -> ImageTk.PhotoImage: """ - afficher_image(case : entier) : tkinter.PhotoImage + afficher_image(case : entier) : ImageTk.PhotoImage Entrée : case : numéro de la case Sortie : - tkinter.PhotoImage - image de la case + ImageTk.PhotoImage - image de la case """ # Ouverture de l'image @@ -60,7 +61,7 @@ def afficher_image(case, taille): return ImageTk.PhotoImage(image_redimensionner) -def enter_bouton_fermer(event): +def enter_bouton_fermer(event: tkinter.Event) -> None: """ enter_bouton_fermer(event) Changement de couleur du bouton lorsqu'on passe la souris dessus @@ -72,7 +73,7 @@ def enter_bouton_fermer(event): event.widget.configure(bg=ROUGE, fg=BLANC) # Changement de couleur du bouton -def leave_bouton_fermer(event): +def leave_bouton_fermer(event: tkinter.Event) -> None: """ leave_bouton_fermer(event) Changement de couleur du bouton lorsqu'on sort la souris de la zone du bouton @@ -80,7 +81,7 @@ def leave_bouton_fermer(event): event.widget.configure(bg=BG_TEMP, fg=FG_TEMP) # Changement de couleur du bouton -def enter_bouton_minimiser(event): +def enter_bouton_minimiser(event: tkinter.Event) -> None: """ enter_bouton_minimiser(event) Changement de couleur du bouton lorsqu'on passe la souris dessus From eed7cecbd127cd48be74aff13c31b194fba2e9e1 Mon Sep 17 00:00:00 2001 From: Ahhj93 <69793084+Ahhj93@users.noreply.github.com> Date: Sat, 1 Jul 2023 14:51:16 +0200 Subject: [PATCH 11/16] Update --- autres_fonctions.py | 14 ++-- main.py | 1 + mouvement.py | 151 +++++++++++++++++++++++--------------------- taille_fenetre.py | 6 ++ 4 files changed, 95 insertions(+), 77 deletions(-) diff --git a/autres_fonctions.py b/autres_fonctions.py index 4adb6d9..ad6d58e 100644 --- a/autres_fonctions.py +++ b/autres_fonctions.py @@ -1,3 +1,9 @@ +""" +autres_fonctions.py + contient les fonctions annexes au jeu + Auteur : Ryse93 +""" + # Importation des bibliothèques import random import tkinter @@ -66,8 +72,8 @@ def enter_bouton_fermer(event: tkinter.Event) -> None: enter_bouton_fermer(event) Changement de couleur du bouton lorsqu'on passe la souris dessus """ - global BG_TEMP - global FG_TEMP + global BG_TEMP # pylint: disable=global-statement + global FG_TEMP # pylint: disable=global-statement BG_TEMP = event.widget["bg"] FG_TEMP = event.widget["fg"] event.widget.configure(bg=ROUGE, fg=BLANC) # Changement de couleur du bouton @@ -86,8 +92,8 @@ def enter_bouton_minimiser(event: tkinter.Event) -> None: enter_bouton_minimiser(event) Changement de couleur du bouton lorsqu'on passe la souris dessus """ - global BG_TEMP - global FG_TEMP + global BG_TEMP # pylint: disable=global-statement + global FG_TEMP # pylint: disable=global-statement BG_TEMP = event.widget["bg"] FG_TEMP = event.widget["fg"] event.widget.configure(bg=GRIS1, fg=BLANC) # Changement de couleur du bouton diff --git a/main.py b/main.py index 0e4cf75..9770bfe 100644 --- a/main.py +++ b/main.py @@ -3,6 +3,7 @@ Fichier qui contient le code du jeu 2048 Auteur : Ahhj93 """ + # Importation des bibliothèques import tkinter import tkinter.messagebox diff --git a/mouvement.py b/mouvement.py index 2f6b638..41baeef 100644 --- a/mouvement.py +++ b/mouvement.py @@ -1,51 +1,57 @@ +""" +mouvement.py + Fonction de mouvement des cases du jeu. + Auteur : Ahhj93 +""" + def Gauche(Tab): """ - 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 + 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 loop in range(3): - for j in range(3,0,-1): - if Tab[i][j-1] == 0: - Tab[i][j-1] = Tab[i][j] + 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 + 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 loop in range(3): - for j in range(3,0,-1): - if Tab[i][j-1] == 0: - Tab[i][j-1] = Tab[i][j] + 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): """ - 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 + 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 @@ -53,40 +59,40 @@ def Haut(Tab): # Boucle pour chaque colonne for j in range(4): - # Déplacement des cases vers la haut - for loop in range(3): - for i in range(3,0,-1): - if Tab[i-1][j] == 0: - Tab[i-1][j] = Tab[i][j] + 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 + 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 loop in range(3): - for i in range(3,0,-1): - if Tab[i-1][j] == 0: - Tab[i-1][j] = Tab[i][j] + 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): """ - 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 + 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 @@ -94,37 +100,37 @@ def Droite(Tab): # Boucle pour chaque ligne for i in range(4): - # Déplacement des cases vers la droite - for loop in range(3): - for j in range(0,3): - if Tab[i][j+1] == 0: - Tab[i][j+1] = Tab[i][j] + 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 + 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 loop in range(3): - for j in range(0,3): - if Tab[i][j+1] == 0: - Tab[i][j+1] = Tab[i][j] + 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): """ - Bas(Tab : Tab) : (deplacement : bouléen, fusion : bouléen) - j : colonne + Bas(Tab : Tab) : (deplacement : bouléen, fusion : bouléen) + j : colonne """ deplacement = False @@ -132,29 +138,28 @@ def Bas(Tab): # Boucle pour chaque colonne for j in range(4): - # Déplacement des cases vers le bas - for loop in range(3): - for i in range(0,3): - if Tab[i+1][j] == 0: - Tab[i+1][j] = Tab[i][j] + 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 + 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 loop in range(3): - for i in range(0,3): - if Tab[i+1][j] == 0: - Tab[i+1][j] = Tab[i][j] + 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 \ No newline at end of file + return deplacement, fusion diff --git a/taille_fenetre.py b/taille_fenetre.py index 288b4bb..e1d980d 100644 --- a/taille_fenetre.py +++ b/taille_fenetre.py @@ -1,3 +1,9 @@ +""" +taille_fenetre.py + Fonction de la taille de la fenêtre du jeu. + Auteur : Ahhj93 +""" + # Importation des bibliothèques import tkinter import tkinter.messagebox From da6e903359e162eabc2b1af57ed0dadd095af5b4 Mon Sep 17 00:00:00 2001 From: Ahhj93 <69793084+Ahhj93@users.noreply.github.com> Date: Sat, 1 Jul 2023 14:56:41 +0200 Subject: [PATCH 12/16] Update --- main.py | 5 +++-- record.txt | 2 +- taille_fenetre.py | 7 ++++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/main.py b/main.py index 9770bfe..4cbad1a 100644 --- a/main.py +++ b/main.py @@ -11,6 +11,7 @@ import signal import time import pygame +import sys from PIL import Image, ImageTk # Importation des fichiers .py du dossier python @@ -196,7 +197,7 @@ def sigint_handler(_signal, _frame): fenetre.destroy() # Fermer la fenêtre pygame.mixer.quit() # Fermer pygame - exit() # Quitter le programme + sys.exit() # Quitter le programme def bouger_fenetre_commence(event): @@ -259,7 +260,7 @@ def quitter(): ): fenetre.destroy() # Fermer la fenêtre pygame.mixer.quit() # Fermeture de pygame - exit() # Quitter le programme + sys.exit() # Quitter le programme def son(): diff --git a/record.txt b/record.txt index bf0d87a..da2d398 100644 --- a/record.txt +++ b/record.txt @@ -1 +1 @@ -4 \ No newline at end of file +14 \ No newline at end of file diff --git a/taille_fenetre.py b/taille_fenetre.py index e1d980d..f3de181 100644 --- a/taille_fenetre.py +++ b/taille_fenetre.py @@ -8,6 +8,7 @@ import tkinter import tkinter.messagebox import signal +import sys from PIL import Image, ImageTk # Importation des fichiers .py du dossier python @@ -40,7 +41,7 @@ def sigint_handler(_signal, _frame): Ferme la fenetre sans erreur lors du KeyboardInterrupt """ fenetre.destroy() - exit() + sys.exit() def bouger_fenetre_commence(event): """ @@ -124,7 +125,7 @@ def bouger_fenetre(event): bouton_fermer = tkinter.Button( barre_titre, text=" X ", - command=lambda: [fenetre.destroy(), exit()], + command=lambda: [fenetre.destroy(), sys.exit()], bg=GRIS3, fg=BLANC, activebackground=ROUGE, @@ -239,7 +240,7 @@ def bouger_fenetre(event): bouton.bind("", leave_bouton) # Fermer le programme lors de lors du click de fermeture de la fenêtre - fenetre.protocol("WM_DELETE_WINDOW", lambda: [fenetre.destroy(), exit()]) + fenetre.protocol("WM_DELETE_WINDOW", lambda: [fenetre.destroy(), sys.exit()]) # Détecte KeyboardInterrupt signal.signal(signal.SIGINT, sigint_handler) From 782fa8d6e2a4e5d5abd703634228c37bedc2f788 Mon Sep 17 00:00:00 2001 From: Ahhj93 <69793084+Ahhj93@users.noreply.github.com> Date: Sat, 1 Jul 2023 15:03:01 +0200 Subject: [PATCH 13/16] Update main.py --- main.py | 84 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/main.py b/main.py index 4cbad1a..5b38ea9 100644 --- a/main.py +++ b/main.py @@ -50,10 +50,10 @@ TableauJeu = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] Case = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] Img = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] -nbDeplacement = 0 -perdu = False -gagne = False -jouer = True +NB_DEPLACEMENT = 0 +PERDU = False +GAGNER = False +JOUER = True def reinitialiser_score(): @@ -131,7 +131,7 @@ def fonction_timer(i, label): minute = f"0{i//60}"[-2:] # On récupère les minutes seconde = f"0{i%60}"[-2:] # On récupère les secondes label.set(f" Timer : {minute}:{seconde}") # On met à jour le label - i = round(time.time() - tempsDebut) # On met à jour le temps + i = round(time.time() - TEMPS_DEBUT) # On met à jour le temps if RPC_MODULE: somme_tableau = ( @@ -146,7 +146,7 @@ def fonction_timer(i, label): RPC.update( details="Un jeu de puzzle numérique addictif", state="Score : " + str(somme_tableau), - start=tempsDebut, + start=TEMPS_DEBUT, large_image="logo", large_text="Python-2048", small_image=str(plus_grand_nombre), @@ -303,7 +303,7 @@ def afficher_jeu(): Case[i][j].image = Img[i][j] # type: ignore # Afficher le nombre de déplacement - nbDeplacementVar.set(f" Nombre de déplacement : {nbDeplacement}") + nbDeplacementVar.set(f" Nombre de déplacement : {NB_DEPLACEMENT}") # Afficher le score (somme du tableau) somme_tableau = ( @@ -333,20 +333,20 @@ def recommencer(): """ # Variables globales - global nbDeplacement - global perdu - global tempsDebut + global NB_DEPLACEMENT #pylint: disable=global-statement + global PERDU #pylint: disable=global-statement + global TEMPS_DEBUT #pylint: disable=global-statement # Remettre à zéro le tableau for i in range(4): TableauJeu[i] = [0, 0, 0, 0] # Remettre à zéro le nombre de déplacement - nbDeplacement = 0 + NB_DEPLACEMENT = 0 # Remettre à zéro la variable perdu - perdu = False + PERDU = False # Remettre à zéro le temps de départ - tempsDebut = int(time.time()) + TEMPS_DEBUT = int(time.time()) # Boucle pour mettre deux cases de 2 dans le tableau caseDebut = 0 @@ -367,23 +367,23 @@ def appuyer(event): """ # Variables globales - global perdu - global gagne - global nbDeplacement - global jouer + global PERDU #pylint: disable=global-statement + global GAGNER #pylint: disable=global-statement + global NB_DEPLACEMENT #pylint: disable=global-statement + global JOUER #pylint: disable=global-statement # Variables locales - caseVide = False + case_vide = False deplacement = False - deplacementPossible = False - deplacementFait = False + deplacement_possible = False + deplacement_fait = False # Test si case vide donc déplacement possible for i in range(0, 4): for j in range(0, 4): if TableauJeu[i][j] == 0: - caseVide = True - deplacementPossible = True + case_vide = True + deplacement_possible = True # Test si seulement déplacement possible TableauJeuTempGauche = copy.deepcopy(TableauJeu) @@ -408,22 +408,22 @@ def appuyer(event): or fusionDroite or fusionBas ): - deplacementPossible = True + deplacement_possible = True # Si déplacement impossible, perdu - if not deplacementPossible and not perdu and jouer: - perdu = True + if not deplacement_possible and not PERDU and JOUER: + PERDU = True jouer_son("Audio/Perdu.mp3") - jouer = False + JOUER = False if tkinter.messagebox.showinfo( "Perdu", f"Vous avez perdu !\n{nbDeplacementVar.get()}\n{sommeTableauVar.get()}\n{timer.get()}", icon="info", ): recommencer() - jouer = True + JOUER = True - elif deplacementPossible and jouer: + elif deplacement_possible and JOUER: # Récupérer keycode de la touche appuyée keycode = event.keycode @@ -436,7 +436,7 @@ def appuyer(event): and TableauJeu != TableauJeuTempGauche ): mouvement.Gauche(TableauJeu) - deplacementFait = True + deplacement_fait = True if fusionGauche: jouer_son("Audio/Fusion.mp3") # Jouer le son de la fusion @@ -453,7 +453,7 @@ def appuyer(event): and TableauJeu != TableauJeuTempHaut ): mouvement.Haut(TableauJeu) - deplacementFait = True + deplacement_fait = True if fusionHaut: jouer_son("Audio/Fusion.mp3") # Jouer le son de la fusion @@ -470,7 +470,7 @@ def appuyer(event): and TableauJeu != TableauJeuTempDroite ): mouvement.Droite(TableauJeu) - deplacementFait = True + deplacement_fait = True if fusionDroite: jouer_son("Audio/Fusion.mp3") # Jouer le son de la fusion @@ -487,7 +487,7 @@ def appuyer(event): and TableauJeu != TableauJeuTempBas ): mouvement.Bas(TableauJeu) - deplacementFait = True + deplacement_fait = True if fusionBas: jouer_son("Audio/Fusion.mp3") # Jouer le son de la fusion @@ -495,7 +495,7 @@ def appuyer(event): # Jouer le son du déplacement jouer_son("Audio/Deplacement.mp3") - if caseVide and deplacementFait: + if case_vide and deplacement_fait: # Faire apparaître une nouvelle case de 2 while not deplacement: x, y = tuile_aleatoire() @@ -504,16 +504,16 @@ def appuyer(event): deplacement = True # Ajouter 1 au compteur d'étape - nbDeplacement += 1 + NB_DEPLACEMENT += 1 # Valeur du tableau "TableauJeu" dans la fenêtre afficher_jeu() # Test si 2048 est atteint for i in range(4): - if 2048 in TableauJeu[i] and not gagne and jouer: - jouer = False - gagne = True + if 2048 in TableauJeu[i] and not GAGNER and JOUER: + JOUER = False + GAGNER = True # Son lorsque gagné jouer_son("Audio/Gagne.mp3") # Message de victoire @@ -527,9 +527,9 @@ def appuyer(event): "Continuer", "Voulez-vous continuez ?", icon="question" ): recommencer() - jouer = True + JOUER = True else: - jouer = True + JOUER = True # Main @@ -699,7 +699,7 @@ def appuyer(event): # Label nbDeplacement nbDeplacementVar = tkinter.StringVar() -nbDeplacementVar.set(f" Nombre de déplacement : {nbDeplacement}") +nbDeplacementVar.set(f" Nombre de déplacement : {NB_DEPLACEMENT}") nbDeplacementLabel = tkinter.Label( fenetre, textvariable=nbDeplacementVar, @@ -722,8 +722,8 @@ def appuyer(event): sommeTableauLabel.grid(row=4, column=0, columnspan=4, sticky="w") # Timers -tempsDebut: int = int(time.time()) -temps: int = round(time.time() - tempsDebut) +TEMPS_DEBUT: int = int(time.time()) +temps: int = round(time.time() - TEMPS_DEBUT) timer = tkinter.StringVar() timer.set(str(temps)) timerLabel = tkinter.Label( From b3febf05120ae4d25e5fdbf694fa57f8330a546d Mon Sep 17 00:00:00 2001 From: Ahhj93 <69793084+Ahhj93@users.noreply.github.com> Date: Sat, 1 Jul 2023 15:25:31 +0200 Subject: [PATCH 14/16] Update main.py --- main.py | 149 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 79 insertions(+), 70 deletions(-) diff --git a/main.py b/main.py index 5b38ea9..f05aae9 100644 --- a/main.py +++ b/main.py @@ -10,8 +10,8 @@ import copy import signal import time -import pygame import sys +import pygame from PIL import Image, ImageTk # Importation des fichiers .py du dossier python @@ -55,6 +55,9 @@ GAGNER = False JOUER = True +X: int | None = None +Y: int | None = None + def reinitialiser_score(): """ @@ -207,9 +210,9 @@ def bouger_fenetre_commence(event): Entrée : event : événement """ - global x, y # On récupère les variables x et y - x = event.x # On récupère la position de la souris en x - y = event.y # On récupère la position de la souris en y + global X, Y # pylint: disable=global-statement # On récupère les variables x et y + X = event.x # On récupère la position de la souris en x + Y = event.y # On récupère la position de la souris en y def bouger_fenetre_arrete(_event): @@ -217,9 +220,9 @@ def bouger_fenetre_arrete(_event): bouger_fenetre_arrete(_event) Fonction qui permet de réinitialiser les variables x et y """ - global x, y # On récupère les variables x et y - x = None # On réinitialise x - y = None # On réinitialise y + global X, Y # pylint: disable=global-statement # On récupère les variables x et y + X = None # On réinitialise x + Y = None # On réinitialise y def bouger_fenetre(event): @@ -232,20 +235,20 @@ def bouger_fenetre(event): Bouge la fenêtre """ - global x, y # On récupère les variables x et y - deltax = ( - event.x - x + global X, Y # pylint: disable=W0602 # On récupère les variables x et y + delta_x = ( + event.x - X ) # On calcule la différence entre la position de la souris et la position de la souris au début du déplacement - deltay = ( - event.y - y + delta_y = ( + event.y - Y ) # On calcule la différence entre la position de la souris et la position de la souris au début du déplacement - ax = ( - fenetre.winfo_x() + deltax + a_x = ( + fenetre.winfo_x() + delta_x ) # On calcule la nouvelle position de la fenêtre en fonction de la différence entre la position de la souris et la position de la souris au début du déplacement - ay = ( - fenetre.winfo_y() + deltay + a_y = ( + fenetre.winfo_y() + delta_y ) # On calcule la nouvelle position de la fenêtre en fonction de la différence entre la position de la souris et la position de la souris au début du déplacement - fenetre.geometry(f"+{ax}+{ay}") # On déplace la fenêtre + fenetre.geometry(f"+{a_x}+{a_y}") # On déplace la fenêtre def quitter(): @@ -333,9 +336,9 @@ def recommencer(): """ # Variables globales - global NB_DEPLACEMENT #pylint: disable=global-statement - global PERDU #pylint: disable=global-statement - global TEMPS_DEBUT #pylint: disable=global-statement + global NB_DEPLACEMENT # pylint: disable=global-statement + global PERDU # pylint: disable=global-statement + global TEMPS_DEBUT # pylint: disable=global-statement # Remettre à zéro le tableau for i in range(4): @@ -349,12 +352,12 @@ def recommencer(): TEMPS_DEBUT = int(time.time()) # Boucle pour mettre deux cases de 2 dans le tableau - caseDebut = 0 - while caseDebut < 2: - x, y = tuile_aleatoire() - if TableauJeu[y][x] == 0: - TableauJeu[y][x] = 2 - caseDebut += 1 + case_debut = 0 + while case_debut < 2: + random_x, random_y = tuile_aleatoire() + if TableauJeu[random_y][random_x] == 0: + TableauJeu[random_y][random_x] = 2 + case_debut += 1 # Afficher le jeu afficher_jeu() @@ -367,10 +370,10 @@ def appuyer(event): """ # Variables globales - global PERDU #pylint: disable=global-statement - global GAGNER #pylint: disable=global-statement - global NB_DEPLACEMENT #pylint: disable=global-statement - global JOUER #pylint: disable=global-statement + global PERDU # pylint: disable=global-statement + global GAGNER # pylint: disable=global-statement + global NB_DEPLACEMENT # pylint: disable=global-statement + global JOUER # pylint: disable=global-statement # Variables locales case_vide = False @@ -386,27 +389,27 @@ def appuyer(event): deplacement_possible = True # Test si seulement déplacement possible - TableauJeuTempGauche = copy.deepcopy(TableauJeu) - deplacementGauche, fusionGauche = mouvement.Gauche(TableauJeuTempGauche) + tableau_jeu_temp_gauche = copy.deepcopy(TableauJeu) + deplacement_gauche, fusion_gauche = mouvement.Gauche(tableau_jeu_temp_gauche) - TableauJeuTempHaut = copy.deepcopy(TableauJeu) - deplacementHaut, fusionHaut = mouvement.Haut(TableauJeuTempHaut) + tableau_jeu_temp_haut = copy.deepcopy(TableauJeu) + deplacement_haut, fusion_haut = mouvement.Haut(tableau_jeu_temp_haut) - TableauJeuTempDroite = copy.deepcopy(TableauJeu) - deplacementDroite, fusionDroite = mouvement.Droite(TableauJeuTempDroite) + tableau_jeu_temp_droite = copy.deepcopy(TableauJeu) + deplacement_droite, fusion_droite = mouvement.Droite(tableau_jeu_temp_droite) - TableauJeuTempBas = copy.deepcopy(TableauJeu) - deplacementBas, fusionBas = mouvement.Bas(TableauJeuTempBas) + tableau_jeu_temp_bas = copy.deepcopy(TableauJeu) + deplacement_bas, fusion_bas = mouvement.Bas(tableau_jeu_temp_bas) if ( - deplacementGauche - or deplacementHaut - or deplacementDroite - or deplacementBas - or fusionGauche - or fusionHaut - or fusionDroite - or fusionBas + deplacement_gauche + or deplacement_haut + or deplacement_droite + or deplacement_bas + or fusion_gauche + or fusion_haut + or fusion_droite + or fusion_bas ): deplacement_possible = True @@ -432,13 +435,13 @@ def appuyer(event): # 100 Pavé numérique gauche if ( (keycode == 37 or keycode == 81 or keycode == 100) - and (deplacementGauche or fusionGauche) - and TableauJeu != TableauJeuTempGauche + and (deplacement_gauche or fusion_gauche) + and TableauJeu != tableau_jeu_temp_gauche ): mouvement.Gauche(TableauJeu) deplacement_fait = True - if fusionGauche: + if fusion_gauche: jouer_son("Audio/Fusion.mp3") # Jouer le son de la fusion else: # Jouer le son du déplacement @@ -449,13 +452,13 @@ def appuyer(event): # 104 Pavé numérique haut elif ( (keycode == 38 or keycode == 90 or keycode == 104) - and (deplacementHaut or fusionHaut) - and TableauJeu != TableauJeuTempHaut + and (deplacement_haut or fusion_haut) + and TableauJeu != tableau_jeu_temp_haut ): mouvement.Haut(TableauJeu) deplacement_fait = True - if fusionHaut: + if fusion_haut: jouer_son("Audio/Fusion.mp3") # Jouer le son de la fusion else: # Jouer le son du déplacement @@ -466,13 +469,13 @@ def appuyer(event): # 102 Pavé numérique droite elif ( (keycode == 39 or keycode == 68 or keycode == 102) - and (deplacementDroite or fusionDroite) - and TableauJeu != TableauJeuTempDroite + and (deplacement_droite or fusion_droite) + and TableauJeu != tableau_jeu_temp_droite ): mouvement.Droite(TableauJeu) deplacement_fait = True - if fusionDroite: + if fusion_droite: jouer_son("Audio/Fusion.mp3") # Jouer le son de la fusion else: # Jouer le son du déplacement @@ -483,13 +486,13 @@ def appuyer(event): # 98 Pavé numérique bas elif ( (keycode == 40 or keycode == 83 or keycode == 98) - and (deplacementBas or fusionBas) - and TableauJeu != TableauJeuTempBas + and (deplacement_bas or fusion_bas) + and TableauJeu != tableau_jeu_temp_bas ): mouvement.Bas(TableauJeu) deplacement_fait = True - if fusionBas: + if fusion_bas: jouer_son("Audio/Fusion.mp3") # Jouer le son de la fusion else: # Jouer le son du déplacement @@ -498,9 +501,9 @@ def appuyer(event): if case_vide and deplacement_fait: # Faire apparaître une nouvelle case de 2 while not deplacement: - x, y = tuile_aleatoire() - if TableauJeu[y][x] == 0: - TableauJeu[y][x] = 2 + random_x, random_y = tuile_aleatoire() + if TableauJeu[random_y][random_x] == 0: + TableauJeu[random_y][random_x] = 2 deplacement = True # Ajouter 1 au compteur d'étape @@ -519,7 +522,9 @@ def appuyer(event): # Message de victoire tkinter.messagebox.showinfo( "Gagné", - f"Vous avez gagné !\n{nbDeplacementVar.get()}\n{sommeTableauVar.get()}\n{timer.get()}", + f"Vous avez gagné !\n{nbDeplacementVar.get()} \ + \n{sommeTableauVar.get()} \ + \n{timer.get()}", icon="info", ) # Demande à l'utilisateur si recommencer @@ -534,12 +539,12 @@ def appuyer(event): # Main # Boucle pour mettre deux cases de 2 dans le tableau -caseDebut = 0 -while caseDebut < 2: - x, y = tuile_aleatoire() - if TableauJeu[y][x] == 0: - TableauJeu[y][x] = 2 - caseDebut += 1 +CASE_DEBUT = 0 +while CASE_DEBUT < 2: + RANDOM_X, RANDOM_Y = tuile_aleatoire() + if TableauJeu[RANDOM_Y][RANDOM_X] == 0: + TableauJeu[RANDOM_Y][RANDOM_X] = 2 + CASE_DEBUT += 1 # Lancer la fonction TailleFenêtre pour avoir la taille de la fenêtre qu'on demande à l'utilisateur taille = taille_fenetre() @@ -681,8 +686,12 @@ def appuyer(event): # Label cases for i in range(4): for j in range(4): - Img[i][j] = afficher_image(TableauJeu[i][j], taille) # type: ignore # Création des images - Case[i][j] = tkinter.Label(fenetre, image=Img[i][j], bg=GRIS2) # type: ignore # Créer la case + Img[i][j] = afficher_image( # type: ignore # Création des images + TableauJeu[i][j], taille + ) + Case[i][j] = tkinter.Label( # type: ignore # Créer la case + fenetre, image=Img[i][j], bg=GRIS2 # type: ignore + ) # Placer la case dans la grille de la fenêtre Case[i][j].grid(row=i + 6, column=j) # type: ignore From f1212c1b7bd63564e1cf212b98edb583509a9f85 Mon Sep 17 00:00:00 2001 From: Ahhj93 <69793084+Ahhj93@users.noreply.github.com> Date: Sat, 1 Jul 2023 15:35:20 +0200 Subject: [PATCH 15/16] Update main.py --- main.py | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/main.py b/main.py index f05aae9..9f4e29b 100644 --- a/main.py +++ b/main.py @@ -92,9 +92,9 @@ def fenetre_focus_in(_event): nbDeplacementLabel.configure(bg=GRIS2, fg=BLANC) sommeTableauLabel.configure(bg=GRIS2, fg=BLANC) timerLabel.configure(bg=GRIS2, fg=BLANC) - for i in range(4): - for j in range(4): - Case[i][j].configure(bg=GRIS2) # type: ignore + for case_y in range(4): + for case_x in range(4): + Case[case_y][case_x].configure(bg=GRIS2) # type: ignore def fenetre_focus_out(_event): @@ -117,12 +117,12 @@ def fenetre_focus_out(_event): nbDeplacementLabel.configure(bg=GRIS3, fg=GRIS1) sommeTableauLabel.configure(bg=GRIS3, fg=GRIS1) timerLabel.configure(bg=GRIS3, fg=GRIS1) - for i in range(4): - for j in range(4): - Case[i][j].configure(bg=GRIS3) # type: ignore + for case_y in range(4): + for case_x in range(4): + Case[case_y][case_x].configure(bg=GRIS3) # type: ignore -def fonction_timer(i, label): +def fonction_timer(temps_seconde, temps_label): """ fonction_timer(i, label) Fonction qui permet de mettre à jour le label timerLabel @@ -131,10 +131,10 @@ def fonction_timer(i, label): label : label qui contient le temps """ - minute = f"0{i//60}"[-2:] # On récupère les minutes - seconde = f"0{i%60}"[-2:] # On récupère les secondes - label.set(f" Timer : {minute}:{seconde}") # On met à jour le label - i = round(time.time() - TEMPS_DEBUT) # On met à jour le temps + minute = f"0{temps_seconde//60}"[-2:] # On récupère les minutes + seconde = f"0{temps_seconde%60}"[-2:] # On récupère les secondes + temps_label.set(f" Timer : {minute}:{seconde}") # On met à jour le label + temps_seconde = round(time.time() - TEMPS_DEBUT) # On met à jour le temps if RPC_MODULE: somme_tableau = ( @@ -298,12 +298,12 @@ def afficher_jeu(): Affiche le tableau avec 4 lignes et forme la fenêtre """ - for i in range(4): + for case_y in range(4): # Création des images - for j in range(4): - Img[i][j] = afficher_image(TableauJeu[i][j], taille) # type: ignore # Création des images - Case[i][j].configure(image=Img[i][j]) # type: ignore - Case[i][j].image = Img[i][j] # type: ignore + for case_x in range(4): + Img[case_y][case_x] = afficher_image(TableauJeu[case_y][case_x], taille) # type: ignore # Création des images + Case[case_y][case_x].configure(image=Img[case_y][case_x]) # type: ignore + Case[case_y][case_x].image = Img[case_y][case_x] # type: ignore # Afficher le nombre de déplacement nbDeplacementVar.set(f" Nombre de déplacement : {NB_DEPLACEMENT}") @@ -341,8 +341,8 @@ def recommencer(): global TEMPS_DEBUT # pylint: disable=global-statement # Remettre à zéro le tableau - for i in range(4): - TableauJeu[i] = [0, 0, 0, 0] + for ligne in range(4): + TableauJeu[ligne] = [0, 0, 0, 0] # Remettre à zéro le nombre de déplacement NB_DEPLACEMENT = 0 @@ -382,9 +382,9 @@ def appuyer(event): deplacement_fait = False # Test si case vide donc déplacement possible - for i in range(0, 4): - for j in range(0, 4): - if TableauJeu[i][j] == 0: + for case_y in range(0, 4): + for case_x in range(0, 4): + if TableauJeu[case_y][case_x] == 0: case_vide = True deplacement_possible = True @@ -513,8 +513,8 @@ def appuyer(event): afficher_jeu() # Test si 2048 est atteint - for i in range(4): - if 2048 in TableauJeu[i] and not GAGNER and JOUER: + for ligne in range(4): + if 2048 in TableauJeu[ligne] and not GAGNER and JOUER: JOUER = False GAGNER = True # Son lorsque gagné From 146cb3a9f93a75dde9764816d7e7d6d714b1a8d0 Mon Sep 17 00:00:00 2001 From: Ahhj93 <69793084+Ahhj93@users.noreply.github.com> Date: Sat, 1 Jul 2023 15:40:20 +0200 Subject: [PATCH 16/16] Update --- main.py | 16 ++++----- mouvement.py | 88 +++++++++++++++++++++++------------------------ taille_fenetre.py | 38 ++++++++++---------- 3 files changed, 72 insertions(+), 70 deletions(-) diff --git a/main.py b/main.py index 9f4e29b..f1c8e62 100644 --- a/main.py +++ b/main.py @@ -390,16 +390,16 @@ def appuyer(event): # Test si seulement déplacement possible tableau_jeu_temp_gauche = copy.deepcopy(TableauJeu) - deplacement_gauche, fusion_gauche = mouvement.Gauche(tableau_jeu_temp_gauche) + deplacement_gauche, fusion_gauche = mouvement.gauche(tableau_jeu_temp_gauche) tableau_jeu_temp_haut = copy.deepcopy(TableauJeu) - deplacement_haut, fusion_haut = mouvement.Haut(tableau_jeu_temp_haut) + deplacement_haut, fusion_haut = mouvement.haut(tableau_jeu_temp_haut) tableau_jeu_temp_droite = copy.deepcopy(TableauJeu) - deplacement_droite, fusion_droite = mouvement.Droite(tableau_jeu_temp_droite) + deplacement_droite, fusion_droite = mouvement.droite(tableau_jeu_temp_droite) tableau_jeu_temp_bas = copy.deepcopy(TableauJeu) - deplacement_bas, fusion_bas = mouvement.Bas(tableau_jeu_temp_bas) + deplacement_bas, fusion_bas = mouvement.bas(tableau_jeu_temp_bas) if ( deplacement_gauche @@ -438,7 +438,7 @@ def appuyer(event): and (deplacement_gauche or fusion_gauche) and TableauJeu != tableau_jeu_temp_gauche ): - mouvement.Gauche(TableauJeu) + mouvement.gauche(TableauJeu) deplacement_fait = True if fusion_gauche: @@ -455,7 +455,7 @@ def appuyer(event): and (deplacement_haut or fusion_haut) and TableauJeu != tableau_jeu_temp_haut ): - mouvement.Haut(TableauJeu) + mouvement.haut(TableauJeu) deplacement_fait = True if fusion_haut: @@ -472,7 +472,7 @@ def appuyer(event): and (deplacement_droite or fusion_droite) and TableauJeu != tableau_jeu_temp_droite ): - mouvement.Droite(TableauJeu) + mouvement.droite(TableauJeu) deplacement_fait = True if fusion_droite: @@ -489,7 +489,7 @@ def appuyer(event): and (deplacement_bas or fusion_bas) and TableauJeu != tableau_jeu_temp_bas ): - mouvement.Bas(TableauJeu) + mouvement.bas(TableauJeu) deplacement_fait = True if fusion_bas: diff --git a/mouvement.py b/mouvement.py index 41baeef..914e694 100644 --- a/mouvement.py +++ b/mouvement.py @@ -4,9 +4,9 @@ Auteur : Ahhj93 """ -def Gauche(Tab): +def gauche(tab): """ - Gauche(Tab : Tab) : (deplacement : bouléen, fusion : bouléen) + 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 @@ -21,33 +21,33 @@ def Gauche(Tab): # 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 + 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 + 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 + 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): +def haut(tab): """ - Haut(Tab : Tab) : (deplacement : bouléen, fusion : bouléen) + 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 @@ -62,33 +62,33 @@ def Haut(Tab): # 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 + 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 + 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 + 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): +def droite(tab): """ - Droite(Tab : Tab) : (deplacement : bouléen, fusion : bouléen) + 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 @@ -103,33 +103,33 @@ def Droite(Tab): # 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 + 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 + 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 + 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): +def bas(tab): """ - Bas(Tab : Tab) : (deplacement : bouléen, fusion : bouléen) + bas(tab : tab) : (deplacement : bouléen, fusion : bouléen) j : colonne """ @@ -141,24 +141,24 @@ def Bas(Tab): # 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 + 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 + 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 + 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 diff --git a/taille_fenetre.py b/taille_fenetre.py index f3de181..19297bd 100644 --- a/taille_fenetre.py +++ b/taille_fenetre.py @@ -27,6 +27,8 @@ leave_bouton, ) +X: int | None = None +Y: int | None = None def taille_fenetre(): """ @@ -50,18 +52,18 @@ def bouger_fenetre_commence(event): Entrée : event : événement """ - global x, y # On récupère les variables x et y - x = event.x # On récupère la position de la souris en x - y = event.y # On récupère la position de la souris en y + global X, Y #pylint: disable=W0603 # On récupère les variables x et y + X = event.x # On récupère la position de la souris en x + Y = event.y # On récupère la position de la souris en y def bouger_fenetre_arrete(_event): """ bouger_fenetre_arrete(_event) Fonction qui permet de bouger la fenêtre """ - global x, y # On récupère les variables x et y - x = None # On réinitialise x - y = None # On réinitialise y + global X, Y #pylint: disable=W0603 # On récupère les variables x et y + X = None # On réinitialise x + Y = None # On réinitialise y def bouger_fenetre(event): """ @@ -71,20 +73,20 @@ def bouger_fenetre(event): Sortie : Bouge la fenêtre """ - global x, y # On récupère les variables x et y - deltax = ( - event.x - x + global X, Y #pylint: disable=W0602 # On récupère les variables x et y + delta_x = ( + event.x - X ) # On calcule la différence entre la position de la souris et la position de la souris au début du déplacement - deltay = ( - event.y - y + delta_y = ( + event.y - Y ) # On calcule la différence entre la position de la souris et la position de la souris au début du déplacement - ax = ( - fenetre.winfo_x() + deltax + a_x = ( + fenetre.winfo_x() + delta_x ) # On calcule la nouvelle position de la fenêtre en fonction de la différence entre la position de la souris et la position de la souris au début du déplacement - ay = ( - fenetre.winfo_y() + deltay + a_y = ( + fenetre.winfo_y() + delta_y ) # On calcule la nouvelle position de la fenêtre en fonction de la différence entre la position de la souris et la position de la souris au début du déplacement - fenetre.geometry(f"+{ax}+{ay}") # On déplace la fenêtre + fenetre.geometry(f"+{a_x}+{a_y}") # On déplace la fenêtre # Lancer la fenêtre Tkinter fenetre = tkinter.Tk() @@ -133,7 +135,7 @@ def bouger_fenetre(event): borderwidth=0, font=("Arial", 12), ) - bouton_fermer.pack(side="right") + bouton_fermer.pack(side="right") #pylint: disable=W0101 bouton_fermer.bind("", enter_bouton_fermer) bouton_fermer.bind("", leave_bouton_fermer) @@ -243,7 +245,7 @@ def bouger_fenetre(event): fenetre.protocol("WM_DELETE_WINDOW", lambda: [fenetre.destroy(), sys.exit()]) # Détecte KeyboardInterrupt - signal.signal(signal.SIGINT, sigint_handler) + signal.signal(signal.SIGINT, sigint_handler) #pylint: disable=W0101 # Exécution de la fenêtre fenetre.mainloop()