Forum Clubic

Projet terminale, pendu

Bonjour, actuellement en classe de terminale en option ISN, nous devons présenter un projet pour la fin de l’année, notre choix s’est fait sur un pendu, seulement, on débute en programmation et à certains endroits, on bloque, nous aimerions avoir un coup de pouce dans la fonction def lire(lettre), faire en sorte que si la lettre n’est pas dans le mot, sa rajoute un "compteur d’erreur’’ qui fait que si il y a une erreur de plus, une seconde image du pendu s’affiche a la place de la premiere et si la personne à bon, alors la lettre s’affiche à la place du tiret qu’il y a sur les boutons.
Voici les photos permettant la fonction de l’application :
[Photo supprimée]

et le code :

from tkinter import * #Importe les fonction de tkinter
from random import *

-------------------------------------------------------------------variables ----------------------------------------------------------------------------------------

liste=[“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”] #définit une liste pour l’alphabet
listeSerie=[“SHERLOCK”,“GOTHAM”,“ARROW”,“HOLMES”,“WAYNE”,“PINKMAN”,“QUEEN”,“TARGARYAN”,“ICHIGO”,“AOMINE”,“BLEACH”,“MIKASA”,“REIGN”,“RYUK”,“NARUTO”,“LUFFY”,“MERLIN”,“AWKWARD”,“JENNA”,“SKINS”,“MISFITS”]
listeMusique=[“MUSE”, “BEATLES”, “NIRVANA”, “GORILLAZ”, “NICKELBACK”, “TRIO”, “MCCARTNEY”, “BELLAMY”, “NIGHTMARE”, “PERFECT”, “RADIOACTIVE”, “HELLO”, “HEROES”, “PHOTOGRAPH”, “SUPERTRAMP”, “INDILA”, “VIANNEY”]
listeCinema=[“DRAGON”,“GATTACA”,“CHOCOLAT”,“ROCKY”,“CHAPPIE”,“CHUCKY”,“DEADPOOL”,“HOBBIT”,“TITANIC”,“KROKMOU”,“BRUTON”,“DICAPRIO”,“GANDALF”,“GOLUM”,“TERMINATOR”,“DIVERGENTE”,“AVATAR”,“BATMAN”,“SUPERMAN”]
listeScience=[“ALVEOLES”,“FRACTION”,“ADDITION”,“MEIOSE”,“FECONDATION”,“SPERMATOZOIDE”,“ASTENOSPHERE”,“ETOILE”,“ELECTRICITE”,“HEINSTEIN”,“MOLECULES”,“BIOLOGIE”,“DISSECTION”,“EPROUVETTE”,“PISSETTE”,“DEMONSTRATION”,“COSINUS”,“ABSCISSE”,“ORDONNEE”,“BEZOUT”,“PROGRES”,“SERINGUE”,“COMBUSTION”,“PRECIPITE”]
listeJeuxvideo=[“BATTLEFIELD”,“FABLE”,“HALLO”,“POKEMON”,“MARIO”,“TETRIS”,“SONIC”,“ZELDA”,“SEGA”,“PLAYSTATION”,“BATMAN”,“DOFUS”,“WAKFU”,“LINK”,“PORTAL”,“XBOX”,“SPYRO”,“YOSHI”,“CORTANA”,“GAMECUBE”]
listeAleatoire=[“SHERLOCK”,“GOTHAM”,“ARROW”,“HOLMES”,“WAYNE”,“PINKMAN”,“QUEEN”,“TARGARYAN”,“ICHIGO”,“AOMINE”,“BLEACH”,“MIKASA”,“REIGN”,“RYUK”,“NARUTO”,“LUFFY”,“MERLIN”,“AWKWARD”,“BATTLEFIELD”,“FABLE”,“HALLO”,“POKEMON”,“MARIO”,“TETRIS”,“SONIC”,“ZELDA”,“SEGA”,“PLAYSTATION”,“BATMAN”,“DOFUS”,“WAKFU”,“LINK”,“PORTAL”,“XBOX”,“SPYRO”,“YOSHI”,“CORTANA”,“GAMECUBE”,“JENNA”,“SKINS”,“MISFITS”,“MUSE”, “BEATLES”, “NIRVANA”, “GORILLAZ”, “NICKELBACK”, “TRIO”, “MCCARTNEY”, “BELLAMY”, “NIGHTMARE”, “PERFECT”, “RADIOACTIVE”,“DRAGON”,“GATTACA”,“CHOCOLAT”,“ROCKY”,“CHAPPIE”,“CHUCKY”,“DEADPOOL”,“HOBBIT”,“TITANIC”,“KROKMOU”,“BRUTON”,“DICAPRIO”,“GANDALF”,“GOLUM”,“TERMINATOR”,“DIVERGENTE”,“AVATAR”,“BATMAN”,“SUPERMAN”,“HELLO”, “HEROES”,“ALVEOLES”,“FRACTION”,“ADDITION”,“MEIOSE”,“FECONDATION”,“SPERMATOZOIDE”,“ASTENOSPHERE”,“ETOILE”,“ELECTRICITE”,“HEINSTEIN”,“MOLECULES”,“BIOLOGIE”,“DISSECTION”,“EPROUVETTE”,“PISSETTE”,“DEMONSTRATION”,“COSINUS”,“ABSCISSE”,“ORDONNEE”,“BEZOUT”,“PROGRES”,“SERINGUE”,“COMBUSTION”,“PRECIPITE”, “PHOTOGRAPH”, “SUPERTRAMP”, “INDILA”, “VIANNEY”]

caracteres = [] # ///////////////// cete liste, déclarée dans le script principal peut être lue et modifiée par toutes vos procédures

--------------------------------------------------------------------procédures --------------------------------------------------------------------------------------

def lire(lettre): #Défini une nouvelle fonction qui permet d’afficher la bonne lettre sur le bouton
n=0

if (lettre in caracteres):
    n=n
            
    messagebox.showinfo("","la lettre  "+ str( lettre) + "  est dans le mot "+str(caracteres) )
    
else:
    messagebox.showinfo("","la lettre  "+ str( lettre) + "  n'est pas dans le mot "+str(caracteres) )

    
    n=n+1
    



    if(compteur==1):
        
        erreur1.place(height=230,width=200,x=560,y=175)
        

    if(compteur ==2):
        erreur2.place(height=230,width=200,x=560,y=175)

    if(n ==3):
        erreur3.place(height=230,width=200,x=560,y=175)
        
    if(n ==4):
        erreur4.place(height=230,width=200,x=560,y=175)

    if(n==5):
        erreur5.place(height=230,width=200,x=560,y=175)

def jouer(choix): #Défini une nouvelle fonction qui effaceras la page quand on cliquera sur un choix
BoutonSerie.place_forget() #Quand la commande jouer est activer, fait disparaître le bouton qui commande le thème Séries
BoutonCinema.place_forget() #Quand la commande jouer est activer, fait disparaître le bouton qui commande le thème Cinéma
BoutonMusique.place_forget() #Quand la commande jouer est activer, fait disparaître le bouton qui commande le thème Musique
BoutonScience.place_forget() #Quand la commande jouer est activer, fait disparaître le bouton qui commande le thème Science
BoutonJeuxvideo.place_forget() #Quand la commande jouer est activer, fait disparaître le bouton qui commande le thème Jeux vidéo
BoutonAleatoire.place_forget() #Quand la commande jouer est activer, fait disparaître le bouton qui commande le thème Aléatoire
afficherClavier() #Quand la commande jouer est activer, fait apparaitre le clavier

mot = "" # attention: la variable que vous créez ici est locale (cad qu'elle peut être
# utilisée dans cette procédure mais par par les autres
if (choix == "Serie"):
    mot = choice(listeSerie)
elif (choix =="Musique"):
    mot = choice(listeMusique)
elif (choix =="Cinema"):
    mot = choice(listeCinema)
elif (choix =="Science"):
    mot = choice(listeScience)
elif (choix =="Jeuxvideo"):
    mot = choice(listeJeuxvideo)
elif (choix =="Aleatoire"):
    mot = choice(listeAleatoire)

for i in mot: # chaque lettre du string mot est ajoutée à la fin de la liste caractere
    caracteres.append(i) # on modifie la liste caracteres définie dans le script principal (et qui pourra être utilisé par les autres procédures)


nblettres = len (caracteres)
# attention: la variable nblettres que vous créez ici est aussi locale (donc on ne pourra pas la lire avec d'autres procédures)




if (nblettres > 0): 
    lettre0.place(x=548,y=420,height=30,width=22)     
if (nblettres >1):
    lettre1.place(x=570,y=420,height=30,width=22)
if  (nblettres >2):
    lettre2.place(x=592,y=420,height=30,width=22)
if  (nblettres >3):
    lettre3.place(x=614,y=420,height=30,width=22)
if (nblettres >4) :
    lettre4.place(x=636,y=420,height=30,width=22)
if  (nblettres >5):
    lettre5.place(x=658,y=420,height=30,width=22)
if  (nblettres >6):
    lettre6.place(x=680,y=420,height=30,width=22)
if (nblettres >7):
    lettre7.place(x=702,y=420,height=30,width=22)
if  (nblettres >8):
    lettre8.place(x=724,y=420,height=30,width=22)
if  (nblettres >9):
    lettre9.place(x=746,y=420,height=30,width=22)
if (nblettres >10):
    lettre10.place(x=592,y=450,height=30,width=22)
if  (nblettres >11):
    lettre11.place(x=614,y=450,height=30,width=22)
if  (nblettres >12):
    lettre12.place(x=636,y=450,height=30,width=22)
if (nblettres >13):
    lettre13.place(x=658,y=450,height=30,width=22)
if  (nblettres >14):
    lettre14.place(x=680,y=450,height=30,width=22)
if  (nblettres >15):
    lettre15.place(x=702,y=450,height=30,width=22)
if  (nblettres >16):
    lettre16.place(x=724,y=450,height=30,width=22)

def afficherClavier(): #Défini une fonction qui permet d’afficher un clavier
n=0 #Affecte à n la valeur 0
while (n < 10): #Créer une boucle et séléctionne les 10 premières lettre de la liste

    texte = liste [n]            #Créer une variable permettant d'aller rechercher une valeur dans la liste
    xx = 22                      #Place la première lettre à 22 pixels de largeur
    yy = 310                     #Place la première lettre à 310 pixels de hauteur
    n= n+1                       #Fais tourner la boucle

    nomWidget = "Bouton" + texte #Fait apparaitre la lettre sur le bouton
    eval(nomWidget).place()


    locals() [nomWidget]=Button(root, text= texte,borderwidth=0,fg="white",bg="black", command= lambda x = texte: lire(x)) #programmes les fonctions du bouton en leurs attribuant des couleurs et une commande qui permet d'afficher la bonne lettre sur le bouton
    locals() [nomWidget].place(height=30,width=22,x=477 + 50 +xx*n, y= 90 + 90+yy ) # Place les lettres qui sont sous forme de bouton à une place qui varie celon la boucle et leurs attribut une taille 
while (n<20):                    #Intègre les lettres entre la 11ème et la 20ème lettre de la liste

    texte = liste [n]            #Créer une variable permettant d'aller rechercher une valeur dans la liste
    xx = 22                      #Place la première lettre à 22 pixels de largeur
    yy = 310                     #Place la première lettre à 310 pixels de hauteur
    n= n+1                       #Fais tourner la boucle

    nomWidget = "Bouton" + texte #Fait apparaitre la lettre sur le bouton



    locals() [nomWidget]=Button(root, text= texte,borderwidth=0,fg="white",bg="black", command= lambda x = texte: lire(x)) #programmes les fonctions du bouton en leurs attribuant des couleurs et une commande qui permet d'afficher la bonne lettre sur le bouton
    locals() [nomWidget].place(height=30,width=22,x=257 + 50 +xx*n, y= 120 + 90+yy )# Place les lettres qui sont sous forme de bouton à une place qui varie celon la boucle et leurs attribut une taille

while (n<26):                    #Intègre les lettre entre la 21ème et la 26ème lettre de la liste

    texte = liste [n]            #Créer une variable permettant d'aller rechercher une valeur dans la liste
    xx = 22                      #Place la première lettre à 22 pixels de largeur
    yy = 310                     #Place la première lettre à 310 pixels de hauteur
    n= n+1                       #Fais tourner la boucle

    nomWidget = "Bouton" + texte #Fait apparaitre la lettre sur le bouton 



    locals() [nomWidget]=Button(root, text= texte,borderwidth=0,fg="white",bg="black", command= lambda x = texte: lire(x)) #programmes les fonctions du bouton en leurs attribuant des couleurs et une commande qui permet d'afficher la bonne lettre sur le bouton
    locals() [nomWidget].place(height=30,width=22,x=80 + 50 +xx*n, y= 148 + 90+yy ) # Place les lettres qui sont sous forme de bouton à une place qui varie celon la boucle et leurs attribut une taille

#--------------------------------------------------------------------déclaration fenetre ------------------------------------------------------------------------------

root=Tk() #création de la fênetre principale
root.title(‘Random’) #définition d’un titre sur la fenêtre principale
root.geometry(‘1350x690+10+10’) #définition des dimensions de la fenêtre
root.configure(bg="#000000") #définition de la couleur du fond d’écran

#-----------------------------------------------------------------------------photos--------------------------------------------------------------------------------------------------
Pendu1=PhotoImage(file=“Pendu1.gif”) #Affiche l’image du pendu si la personne a fait 1 erreur
Pendu2=PhotoImage(file=“Pendu2.gif”) #Affiche l’image du pendu si la personne a fait 2 erreur
Pendu3=PhotoImage(file=“Pendu3.gif”) #Affiche l’image du pendu si la personne a fait 3 erreur
Pendu4=PhotoImage(file=“Pendu4.gif”) #Affiche l’image du pendu si la personne a fait 4 erreur
Pendu5=PhotoImage(file=“Pendu5.gif”) #Affiche l’image du pendu si la personne a fait 5 erreur

#-------------------------------------------------------------------widgets de la première page------------------------------------------------------------------------

photo=PhotoImage(file=“telephone.gif”) #Intégration d’une photos
telephone=Button(root,image=photo,borderwidth=0) #Intégration d’un bouton ainsi que l’image à l’intérieur
telephone.place(height=600,width=300,x=510,y=50) #Placement du bouton téléphone servant de support et reglement de ces dimensions

Pendu = Label(root, text=“Le pendu”,fg=“white”,bg=“black”) # création du label texte
Pendu.place(height=30,width=175,x=560,y=130) # on l?intègre à la fenêtre et configure ces dimensions

erreur1=Button(root,image=Pendu1,borderwidth=0)

erreur2=Button(root,image=Pendu2,borderwidth=0)

erreur3=Button(root,image=Pendu3,borderwidth=0)

erreur4=Button(root,image=Pendu4,borderwidth=0)

erreur5=Button(root,image=Pendu5,borderwidth=0)

BoutonQuitter=Button(root, text=‘Quitter’, command=root.destroy) #création d’un bouton pour fermer la fenêtre
BoutonQuitter.place(height=28,width=45,x=725, y=552) #Placement du bouton “Quitter” dans le téléphone

BoutonSerie=Button(root, text=‘Serie’,command=lambda n=“Serie”:jouer(n)) #création d’un bouton pour la rubrique “Série”
BoutonSerie.place(height=30,width=175,x=560, y=180) #Placement du bouton “Série” dans le téléphone

BoutonCinema=Button(root, text=‘Cinema’,command=lambda n=“Cinema”:jouer(n)) #création d’un bouton pour la rubrique “Cinéma”
BoutonCinema.place(height=30,width=175,x=560, y=240 ) #Placement du bouton “Cinéma” dans le téléphone

BoutonMusique=Button(root, text=‘Musique’,command=lambda n=“Musique”:jouer(n)) #création d’un bouton pour la rubrique “Musique”
BoutonMusique.place(height=30,width=175,x=560, y=300) #Placement du bouton “Musique” dans le téléphone

BoutonScience=Button(root, text=‘Science’,command=lambda n=“Science”:jouer(n)) #création d’un bouton pour la rubrique “Science”
BoutonScience.place(height=30,width=175,x=560, y=360 ) #Placement du bouton “Science” dans le téléphone

BoutonJeuxvideo=Button(root, text=‘Jeux video’,command=lambda n=“Jeuxvideo”:jouer(n)) #création d’un bouton pour la rubrique “Jeux vidéo”
BoutonJeuxvideo.place(height=30,width=175,x=560, y=420 ) #Placement du bouton “Jeux vidéo” dans le téléphone

BoutonAleatoire=Button(root, text=‘Aleatoire’,command=lambda n=“Aleatoire”:jouer(n)) #création d’un bouton pour la rubrique “Aleatoire”
BoutonAleatoire.place(height=30,width=175,x=560, y=480 ) #Placement du bouton “Aleatoire” dans le téléphone

lettre0 = Label(root,text = “-”,fg=“white”,bg=“black”)
lettre1 = Label(root,text = “-”,fg=“white”,bg=“black”)
lettre2 = Label(root,text = “-”,fg=“white”,bg=“black”)
lettre3 = Label(root,text = “-”,fg=“white”,bg=“black”)
lettre4 = Label(root,text = “-”,fg=“white”,bg=“black”)
lettre5 = Label(root,text = “-”,fg=“white”,bg=“black”)
lettre6 = Label(root,text = “-”,fg=“white”,bg=“black”)
lettre7 = Label(root,text = “-”,fg=“white”,bg=“black”)
lettre8 = Label(root,text = “-”,fg=“white”,bg=“black”)
lettre9 = Label(root,text = “-”,fg=“white”,bg=“black”)
lettre10= Label(root,text = “-”,fg=“white”,bg=“black”)
lettre11= Label(root,text = “-”,fg=“white”,bg=“black”)
lettre12= Label(root,text = “-”,fg=“white”,bg=“black”)
lettre13= Label(root,text = “-”,fg=“white”,bg=“black”)
lettre14= Label(root,text = “-”,fg=“white”,bg=“black”)
lettre15= Label(root,text = “-”,fg=“white”,bg=“black”)

#----------------------------------------------------------------------------creer les lettres-------------------------------------------------------------------------

n = 0 #Attribut à n la valeur 0
while (n < 26): #Créer une boucle permettant d’afficher les 26 lettres
texte = liste[n] #Créer une variable permettant d’aller rechercher une valeur dans la liste
nomWidget = “Bouton” + texte #Fait apparaitre la lettre sur le bouton
locals() [nomWidget]=Button(root, text= texte,borderwidth=0,fg=“white”,bg=“black”, command= lambda x = texte: lire(x))#programmes les fonctions du bouton en leurs attribuant des couleurs et une commande qui permet d’afficher la bonne lettre sur le bouton
n =n+1 #Fait tourner la boucle

script principal

créer l’alphabet

root.mainloop()

Bonjour,
Est-ce que vous pouvez me proposer des sites fiables à travers lesquels je peux apprendre rapidement la programmation ? Merci pour votre aide.

Bonjour,

Je ne suis pas sûr que détourner le topic d’un autre à cet effet soit la meilleure option.

Crée un nouveau topic plutôt,

Merci d’avance