Besoin d'aide sur un jeu de pendu (python)

Fermé
Maxence27170 Messages postés 33 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 26 mai 2015 - Modifié par Maxence27170 le 21/05/2015 à 20:06
 Utilisateur anonyme - 27 mai 2015 à 12:45
Bonjour,
Je cherche comme ajouter une liste de mot a un bouton pour un jeu de pendu, par exemple si on clique sur le bouton fruit, j'aimerais que la liste de mot choisie soit la liste de mot de fruit, pareillement pour les sport et pour les animaux.
j'ai beau aller voir sur tout les sites entre les slots et autre et je suis perdu, j'aimerais juste un peu d'aide, je vous donne le programme si dessous :

# Le jeu du pendu par Thibault, Marie et Maxence.

from tkinter import *
from random import choice

fichier = open("liste_mots.txt", "r")
liste_mots = fichier.readlines() # met tous les mots du fichier dans une liste
fichier.close()
prenom = input("Entrez votre prénom : ")
print("Bonjour,", prenom)
print("Avec quelle catégorie voulez-vous jouer ?")

from tkinter import *
fen1 = Tk()
fen1.title('Le jeu du pendu par Thibault, Marie et Maxence.')
tex1 = Label(fen1, text='Les thèmes :', fg='red')
tex1.pack()
bou1 = Button(fen1, text='Animaux', fg='black', cursor="hand2", relief=FLAT, command = fen1.destroy)
bou2 = Button(fen1, text=' Sport ', fg='black', cursor="hand2", relief=FLAT, command =fen1.destroy)
bou3 = Button(fen1, text=' Fruit ', fg='black', cursor="hand2", relief=FLAT, command=fen1.destroy)
bou1.pack()
bou2.pack()
bou3.pack()
fen1.mainloop()



def lettre_dans_mot(lettre):
global partie_en_cours, mot_partiel, mot_choisi, nb_echecs, image_pendu
global bouton, felicitation
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)
bouton[ord(lettre)-65].config(text=" ")
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 était trouvée !
partie_en_cours = False
canevas.itemconfig(felicitation,text="bravo " + prenom +" !")



def afficher_mot(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():
global mot_choisi, mot_partiel, image_pendu, lettres, nb_echecs
global partie_en_cours, liste_mots, bouton, felicitation, FICHIER
for i in range(26):
bouton[i].config(text=chr(i+65))
nb_echecs = 0
partie_en_cours = True
mot_choisi = choice(liste_mots).rstrip()
mot_partiel = "-" * len(mot_choisi)
afficher_mot(mot_partiel)
photo=PhotoImage(file="pendu_0.gif")
image_pendu.config(image=photo)
image_pendu.image=photo
canevas.itemconfig(felicitation,text="")


# création du widget principal

fenetre = Tk()
fenetre.title("Le jeu du pendu par Thibaut, Marie et Maxence.")

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')
felicitation=canevas.create_text(320,110,text="",fill='green',font='Courrier 40')

init_jeu()

fenetre.mainloop()
fenetre.destroy()


A voir également:

1 réponse

Utilisateur anonyme
22 mai 2015 à 11:28
Salut,

Pourrais-tu insérer ton code grâce aux bannières d'insertion ? Pour ça, quand tu écris un message, clique sur <> avec la flèche déroulante. Choisis Python et colle ton code (avec l'indentation).

Pourrais-tu, aussi, reformuler ton problème ? Comment fonctionne ton programme vite fait ?
1
Maxence27170 Messages postés 33 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 26 mai 2015
Modifié par Maxence27170 le 23/05/2015 à 16:57
Mon problème est que, j'aimerais introduire a la suite de :
<
# Le jeu du pendu par Thibault, Marie et Maxence.
 
from tkinter import *
from random import choice
 
fichier = open("liste_mots.txt", "r")
liste_mots = fichier.readlines()    # met tous les mots du fichier dans une liste
fichier.close()
prenom = input("Entrez votre prénom : ")
print("Bonjour,", prenom)
print("Avec quelle catégorie voulez-vous jouer ?")

from tkinter import *
fen1 = Tk()
fen1.title('Le jeu du pendu par Thibault, Marie et Maxence.')
tex1 = Label(fen1, text='Les thèmes :', fg='red')
tex1.pack()
bou1 = Button(fen1, text='Animaux', fg='black', cursor="hand2",  relief=FLAT, command = fen1.destroy)
bou2 = Button(fen1, text='   Sport   ',  fg='black', cursor="hand2",  relief=FLAT,  command =fen1.destroy)
bou3 = Button(fen1, text='  Fruit     ', fg='black', cursor="hand2",  relief=FLAT, command=fen1.destroy)
bou1.pack()
bou2.pack()
bou3.pack()
fen1.mainloop() 


j'aimerais dire, que si l'utilisateur clique par exemple sur fruit, que le programme ouvre la liste de mot fruit.
Merci de votre aide!
0
Maxence27170 Messages postés 33 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 26 mai 2015
23 mai 2015 à 16:58
Voici le code en entier :
 # Le jeu du pendu par Thibault, Marie et Maxence.
 
from tkinter import *
from random import choice
 
fichier = open("liste_mots.txt", "r")
liste_mots = fichier.readlines()    # met tous les mots du fichier dans une liste
fichier.close()
prenom = input("Entrez votre prénom : ")
print("Bonjour,", prenom)
print("Avec quelle catégorie voulez-vous jouer ?")

from tkinter import *
fen1 = Tk()
fen1.title('Le jeu du pendu par Thibault, Marie et Maxence.')
tex1 = Label(fen1, text='Les thèmes :', fg='red')
tex1.pack()
bou1 = Button(fen1, text='Animaux', fg='black', cursor="hand2",  relief=FLAT, command = fen1.destroy)
bou2 = Button(fen1, text='   Sport   ',  fg='black', cursor="hand2",  relief=FLAT,  command =fen1.destroy)
bou3 = Button(fen1, text='  Fruit     ', fg='black', cursor="hand2",  relief=FLAT, command=fen1.destroy)
bou1.pack()
bou2.pack()
bou3.pack()
fen1.mainloop()



def lettre_dans_mot(lettre):
    global partie_en_cours, mot_partiel, mot_choisi, nb_echecs, image_pendu
    global bouton, felicitation
    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)
        bouton[ord(lettre)-65].config(text="  ")
        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 était trouvée !
            partie_en_cours = False
            canevas.itemconfig(felicitation,text="bravo " + prenom +" !")
            


def afficher_mot(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():
    global mot_choisi, mot_partiel, image_pendu, lettres, nb_echecs
    global partie_en_cours, liste_mots, bouton, felicitation, FICHIER
    for i in range(26):
        bouton[i].config(text=chr(i+65))
    nb_echecs = 0
    partie_en_cours = True
    mot_choisi = choice(liste_mots).rstrip()
    mot_partiel = "-" * len(mot_choisi)
    afficher_mot(mot_partiel)
    photo=PhotoImage(file="pendu_0.gif")
    image_pendu.config(image=photo)
    image_pendu.image=photo
    canevas.itemconfig(felicitation,text="")
        

# création du widget principal

fenetre = Tk()
fenetre.title("Le jeu du pendu par Thibaut, Marie et Maxence.")

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') 
felicitation=canevas.create_text(320,110,text="",fill='green',font='Courrier 40')

init_jeu()

fenetre.mainloop()
fenetre.destroy()


 
0
Utilisateur anonyme > Maxence27170 Messages postés 33 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 26 mai 2015
23 mai 2015 à 17:34
Assigne à tes boutons non plus fen1.destroy mais directement une autre fonction par exemple affiche qui réalise : affichage de la liste qui correspond et destruction de fen1. Ce serait pas bien dur ? Le seul problème, c'est qu'il faudrait 3 fonctions différentes pour afficher trois listes différentes. Mais je crois que tu peux te débrouiller avec soit les variables (pour les boutons) soit avec lambda (en passant en paramètre par exemple "fruit" ou autre).
0
Maxence27170 Messages postés 33 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 26 mai 2015
23 mai 2015 à 17:36
Comment fait-on pour assigner cela?
0
Tu as fait plus compliqué que ça avec tes bouton[i] lol.
fen1 = Tk() # Attention à mettre la fonction après cette ligne sinon fen1 pas défini
def fonction():
    print(fruit) # fruit est la liste des fruits
    fen1.destroy()

bouton = Button(fen1,text="Fruit",command=fonction)
bouton.pack()
fen1.mainloop()
0