Problème affichage Tkinter

Résolu
Thomas -  
Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je rencontre un problème avec mon code python du jeu du pendue, à l'affichage Tkinter il ne m'affiche qu'une seul lettre au lieu de plusieurs.

Pouvez-vous m'aider s'il vous plait ?
Voici le code :
# Le jeu du pendu

from tkinter import * #module graphique
from random import choice # module random

fichier = open("listemots.txt", "r") # Ouverture du fichier
listemots = fichier.read() # met tous les mots du fichier dans une liste
texte = listemots.split(";")

def lettre_dans_mot(lettre) : # Fonction apparition de lettres
global partie_en_cours, mot_partiel, mot_choisi, nb_echecs, image_pendu
if partie_en_cours :
nouveau_mot_partiel = ""
lettre_dans_mot = False
i=0
while i<len(mot_choisi):
if mot_choisi[i]==lettre:
nouveau_mot_partiel = nouveau_mot_partiel + lettre
lettre_dans_mot = True
else:
nouveau_mot_partiel = nouveau_mot_partiel + mot_partiel[i]
i+=1
mot_partiel = nouveau_mot_partiel
afficher_mot(mot_partiel)
if not lettre_dans_mot : # lettre fausse. Changer le dessin.
nb_echecs += 1
nomFichier = "pendu_"+str(nb_echecs)+".gif"
photo=PhotoImage(file=nomFichier)
image_pendu.config(image=photo)
image_pendu.image=photo
if nb_echecs == 7: # trop d'erreurs. Fini.
partie_en_cours = False
afficher_mot(mot_choisi)
elif mot_partiel == mot_choisi: # le mot a été trouvé !
partie_en_cours = False

def afficher_mot(mot): # Fonction mot
global lettres
mot_large = ""
i=0
while i<len(mot): # Ajoute un espace entre les lettres
mot_large = mot_large + mot[i] + " "
i+=1
canevas.delete(lettres)
lettres = canevas.create_text(320,60,text=mot_large,fill='black',font='Courrier 30')

def init_jeu(): #definition jeu
global mot_choisi, mot_partiel, image_pendu, lettres
global nb_echecs, partie_en_cours, liste_mots
nb_echecs = 0
partie_en_cours = True
mot_choisi = choice(listemots).rstrip()
mot_choisi = mot_choisi.upper()
mot_partiel = "-" * len(mot_choisi)
afficher_mot(mot_partiel)
photo=PhotoImage(file="pendu_0.gif")
image_pendu.config(image=photo)
image_pendu.image=photo

# création du widget principal / fenetre

fenetre = Tk()
fenetre.title("Le jeu du pendu")

canevas = Canvas(fenetre, bg='white', height=500, width=620)
canevas.pack(side=BOTTOM)

bouton = [0]*26
for i in range(26):
bouton[i] = Button(fenetre,text=chr(i+65),command=lambda x=i+65:lettre_dans_mot(chr(x)))
bouton[i].pack(side=LEFT)

bouton2 = Button(fenetre,text='Quitter',command=fenetre.quit)
bouton2.pack(side=RIGHT)
bouton1 = Button(fenetre,text='Recommencer',command=init_jeu)
bouton1.pack(side=RIGHT)

photo=PhotoImage(file="pendu_0.gif")
image_pendu = Label(canevas, image=photo, border=0)
image_pendu.place(x=120, y=140)
lettres = canevas.create_text(320,60,text="",fill='black',font='Courrier 30')

init_jeu()

fenetre.mainloop()
fenetre.destroy()

5 réponses

  1. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Hello Thomas,

    Je pense que tu peux marquer cet appel comme "résolu"
    1
  2. Thomas
     
    <code csharp># Le jeu du pendu
     
    from tkinter import *   #module graphique
    from random import choice   # module random
     
    fichier = open("listemots.txt", "r")     # Ouverture du fichier
    listemots = fichier.read()       # met tous les mots du fichier dans une liste
    texte = listemots.split(";")
    
    
    
    def lettre_dans_mot(lettre) : # Fonction apparition de lettres
        global partie_en_cours, mot_partiel, mot_choisi, nb_echecs, image_pendu
        if partie_en_cours : 
            nouveau_mot_partiel = ""
            lettre_dans_mot = False
            i=0
            while i<len(mot_choisi):
                if mot_choisi[i]==lettre:
                    nouveau_mot_partiel = nouveau_mot_partiel + lettre
                    lettre_dans_mot = True 
                else:
                    nouveau_mot_partiel = nouveau_mot_partiel + mot_partiel[i]
                i+=1
            mot_partiel = nouveau_mot_partiel  
            afficher_mot(mot_partiel)
            if not lettre_dans_mot :    # lettre fausse. Changer le dessin.
                nb_echecs += 1
                nomFichier = "pendu_"+str(nb_echecs)+".gif"
                photo=PhotoImage(file=nomFichier)
                image_pendu.config(image=photo)
                image_pendu.image=photo
                if nb_echecs == 7:      # trop d'erreurs. Fini.
                    partie_en_cours = False
                    afficher_mot(mot_choisi)
            elif mot_partiel == mot_choisi:     # le mot a été trouvé !
                partie_en_cours = False
     
    
    def afficher_mot(mot):   # Fonction mot
        global lettres
        mot_large = ""
        i=0
        while i<len(mot):       # Ajoute un espace entre les lettres
            mot_large = mot_large + mot[i] + " "
            i+=1
        canevas.delete(lettres)
        lettres = canevas.create_text(320,60,text=mot_large,fill='black',font='Courrier 30') 
    
        
    def init_jeu(): #definition jeu
        global mot_choisi, mot_partiel, image_pendu, lettres
        global nb_echecs, partie_en_cours, liste_mots
        nb_echecs = 0
        partie_en_cours = True
        mot_choisi = choice(listemots).rstrip()
        mot_choisi = mot_choisi.upper()
        mot_partiel = "-" * len(mot_choisi)
        afficher_mot(mot_partiel)
        photo=PhotoImage(file="pendu_0.gif")
        image_pendu.config(image=photo)
        image_pendu.image=photo
            
    
    # création du widget principal / fenetre 
    
    fenetre = Tk()
    fenetre.title("Le jeu du pendu")
    
    canevas = Canvas(fenetre, bg='white', height=500, width=620)
    canevas.pack(side=BOTTOM)
    
    bouton = [0]*26
    for i in range(26):
        bouton[i] = Button(fenetre,text=chr(i+65),command=lambda x=i+65:lettre_dans_mot(chr(x)))
        bouton[i].pack(side=LEFT)
    
    bouton2 = Button(fenetre,text='Quitter',command=fenetre.quit)
    bouton2.pack(side=RIGHT)
    bouton1 = Button(fenetre,text='Recommencer',command=init_jeu)
    bouton1.pack(side=RIGHT)
    
    photo=PhotoImage(file="pendu_0.gif")
    image_pendu = Label(canevas, image=photo, border=0)
    image_pendu.place(x=120, y=140)
    lettres = canevas.create_text(320,60,text="",fill='black',font='Courrier 30') 
    
    init_jeu()
    
    fenetre.mainloop()
    fenetre.destroy()
    
    </code>
    0
  3. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    cet appel fait double emploi avec 'séparer mots dans une liste en .txt', non ?

    je t'ai répondu dans l'autre appel ...
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question