Bonjour,
Sinon au final voilà à quoi ressemble ce jeu du pendu. Il fonctionne bien mais peut-être avec des imperfections au niveau du code. Je lai testé uniquement sur Mac.
Il comporte deux fichiers :
from donnes import *
import string
import tkinter as tk
from tkinter import ttk
from random import choice
class Pendu(tk.Tk):
def __init__(self):
self.var=""
self.var2=""
self.var3 =""
self.var4=""
self.lettre=""
self.alphabet = list(string.ascii_uppercase)
self.mot_a_trouver = self.choisir_mot()
self.lettres_du_joeur = set()
self.nb_chances = NB_COUPS
self.mot_a_trouver = self.choisir_mot()
self.mot_trouve=""
super().__init__()
self.create_menu_bar()
self.creation_fenetre()
self.var.set("*******")
def nouveau(self):
for children in fenetre.winfo_children():
children.destroy()
self.var=""
self.var2=""
self.var3 =""
self.var4=""
self.lettre=""
self.alphabet = list(string.ascii_uppercase)
self.mot_a_trouver = self.choisir_mot()
self.lettres_du_joeur = set()
self.nb_chances = NB_COUPS
self.mot_a_trouver = self.choisir_mot()
self.mot_trouve=""
self.create_menu_bar()
self.creation_fenetre()
self.var.set("*******")
def Combobox_action(self,event) -> str:
self.lettre = self.listeCombo.get()
self.lettre = self.lettre.lower()
self.jeu()
def choisir_mot(self) -> str:
return choice(LISTE_MOTS)
def recuperer_mot_masque(self,mot_complet: str, lettres_du_joeur: set[str]) -> str:
mot_masque = ""
for lettre in mot_complet:
if lettre in lettres_du_joeur:
mot_masque += lettre
else:
mot_masque +="*"
return mot_masque
def jeu(self):
if self.mot_a_trouver != self.mot_trouve and self.nb_chances > 0:
if self.lettre in self.lettres_du_joeur:
self.var2.set(f"vous avez déjà choisi cette lettre : {self.lettre}")
self.nb_chances -=1
elif self.lettre in self.mot_a_trouver:
self.var2.set("bien joué")
self.lettres_du_joeur.add(self.lettre)
self.mot_trouve = self.recuperer_mot_masque(self.mot_a_trouver, self.lettres_du_joeur)
self.var.set(self.mot_trouve)
else:
self.nb_chances -=1
self.lettres_du_joeur.add(self.lettre)
self.var2.set(f" non, la lettre {self.lettre} ne se trouve pas dans le mot")
self.var3.set(f"encore {self.nb_chances} chances")
#ici on trie en une ligne l'ensemble lettres_du_joeur
self.var4.set(sorted(self.lettres_du_joeur))
if self.mot_a_trouver == self.mot_trouve:
self.var2.set(f"Félicitations ! Vous avez trouvé le mot {self.mot_a_trouver}.")
elif self.nb_chances == 0:
self.var2.set("PENDU !!! Vous avez perdu.")
def creation_fenetre(self):
self.columnconfigure(0, weight=0)
self.columnconfigure(1, weight=3)
self.var2 = tk.StringVar()
self.text_info = tk.Label(self, textvariable=self.var2, fg="red", font=("Arial", 20), justify = 'left')
self.text_info.grid( column=0, row=0, sticky= tk.E,padx=0 , pady=0, ipadx =5, ipady = 5)
self.var2.set("choisissez une lettre dans la liste")
self.var = tk.StringVar()
self.text_resultat = tk.Label(self, textvariable=self.var, bg="#a2af77", fg="black", font=("Arial", 24), justify = 'center', relief = 'raised')
self.text_resultat.grid(column=1,row=0, ipadx=40, ipady=5)
self.var3 = tk.StringVar()
self.text_chance = tk.Label(self, textvariable=self.var3, bg="#a2af77", fg="red", font=("Arial", 24), justify = 'center', relief = 'raised')
self.text_chance.grid(column=1,row=2, ipadx=75, ipady=5)
self.var3.set(f"{self.nb_chances} chances")
self.var4 = tk.StringVar()
self.text_lettres_jouees = tk.Label(self, textvariable=self.var4, bg="black", fg="red",font=("Arial", 15), justify = 'center', relief = 'raised')
self.text_lettres_jouees.grid(column=0,row=2, padx=5 , pady=10, ipadx=75, ipady=5)
self.var4.set("a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z.")
#Création de la Combobox via la méthode ttk.Combobox()
self.listeCombo =ttk.Combobox( self, values=self.alphabet)
self.listeCombo.grid(row=1, column=0, padx=5 , pady=5)
self.listeCombo.current(0)
self.listeCombo.bind('<<ComboboxSelected>>', self.Combobox_action)
#Création barre de menu
def create_menu_bar(self):
self.menu_bar = tk.Menu(self)
self.menu_file = tk.Menu(self.menu_bar, tearoff=0)
self.menu_bar.add_cascade(label="Fichier", menu=self.menu_file)
self.menu_file.add_command(label="Nouveau jeu", command=self.nouveau)
self.menu_file.add_separator()
self.menu_file.add_command(label="Quitter", command=self.destroy)
self.config(menu=self.menu_bar)
fenetre = Pendu()
fenetre.title("Jeu du Pendu")
fenetre.geometry('900x150')
fenetre.mainloop()
le fichier donnes :
NB_COUPS = 8
LISTE_MOTS = [
"armoire",
"boucle",
"buisson",
"blaireau",
"chaise",
]
Bonne journée.