Pendu inscrit dans tkinter
bancel
-
_Ritchi_ Messages postés 22348 Date d'inscription Statut Contributeur Dernière intervention -
_Ritchi_ Messages postés 22348 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis en premiére et pendant ces vacances nous avons projet de faire le jeu du pendu dans une fenétre Tkinter et je ne comprend pas car il me met des erreurs au niveaux du tracé du dessin pourrait vous m'aidez ?
Voici le programme :
Merci d'avance
Je suis en premiére et pendant ces vacances nous avons projet de faire le jeu du pendu dans une fenétre Tkinter et je ne comprend pas car il me met des erreurs au niveaux du tracé du dessin pourrait vous m'aidez ?
Voici le programme :
from random import*
from tkinter import*
def choisir_mot(liste):
"""Cette fonction renvoie le mot choisi dans la liste des mots
liste_mots.
On utilise la fonction du module random ."""
i=randrange(len(liste))
return liste[i]
def mot_etoile(a):
"""Fonction permettant de remplacer les lettres par des etoiles """
l=len(a)
chaine=""
for i in range (0,l):
chaine=chaine+"*"
return chaine
def recup_lettre():
"""Cette fonction recupere une lettre saisie par
l'utilisateur. Si la chaine recuperee n'est pas une lettre,
on appelle en boucle la fonction jusqu'a obtenir une lettre"""
lettre = input("Tapez une lettre: ")
lettre = lettre.lower()
if len(lettre)>1 or not lettre.isalpha():
print("Vous n'avez pas saisi une lettre valide.")
return recup_lettre()
else:
return lettre
#remplace le mot par des etoiles
def remplacer_mot_etoile (mot1,liste):
mot_cache = ""
for lettre in mot1:
if lettre in liste :
mot_cache += lettre
else :
mot_cache += "*"
return mot_cache
#cette definiton permet de faire les traits a la suite que si le precedent a ete fait
def tracer(n):
if n>=len(dessin_pendu):
print ("Pendu, vous avez perdu ! Le mot etait",Mot,)
exit()
dessin=dessin_pendu[n]
i=0
while i < 10:
if dessin[i+1] is not None :
dessin[i](dessin[i+1])
else:
dessin[i]()
i+=2
def chaine_lettre (liste):
lettres=''
for i in range (0,len(liste)):
lettres=lettres+'-'+liste[i]
return lettres.upper()
Fen=Tk()
Cans1=Canvas(Fen,width=150,height=120,background='yellow')
#Definition du dessin de pendu
dessin_pendu = [(Cans1.create_line(50,10,50,110)),
(Cans1.create_line(50,110,90,110)),
(Cans1.create_line(50,10,110,10)),
(Cans1.create_line(110,10,110,20)),
(Cans1.create_oval(100,20,120,40)),
(Cans1.create_line(110,40,110,80)),
(Cans1.create_line(110,55,90,45)),
(Cans1.create_line(110,55,130,45)),
(Cans1.create_line(110,80,130,90)),
(Cans1.create_line(110,80,90,90))]
#dessin du pendu
#la liste de mot:
liste_mot=[
"voiture",
"maison",
"pierre",
"portable",
"casque",
"ingenieur",
"son"]
#on recupere les lettres propose
# Notre variable pour savoir quand arrêter la partie
continuer_partie = 'o'
lettres_trouvees = []
#debut de la partie
while continuer_partie != 'n':
#Debut du jeu
erreur = 0
while erreur!=9:
mot=choisir_mot(liste_mot)
mot_trouve=remplacer_mot_etoile(mot,lettres_trouvees)
while mot_trouve!=mot:
#on definit que on n a fait aucune erreur au debut de la partie
erreur = 0
continuer_partie = 'o'
#On choisit le mot et on l affiche avec les etoile
mot_trouve=remplacer_mot_etoile(mot,lettres_trouvees)
#Tant que ce que l on a trouve n est pas egal au mot chercher , alors on continue
print("Mot a trouver {}".format(mot_trouve))
#ici , on execute la fonction recup_lettre
lettre = recup_lettre()
if lettre in lettres_trouvees: # La lettre a deja ete choisie
print("Vous avez deja choisi cette lettre.")
elif lettre in mot: # La lettre est dans le mot a trouver
lettres_trouvees.append(lettre)
print("Bien joue.")
else:#ce n'est pas la bonne lettre
lettres_trouvees.append(lettre)
tracer(erreur)
erreur+=1
print("... non, cette lettre ne se trouve pas dans le mot...")
mot_trouve=remplacer_mot_etoile(mot,lettres_trouvees)
print ('lettres proposées ',chaine_lettre(lettres_trouvees))
if mot==mot_trouve:
print("Felicitation ! Vous avez trouve le mot {0}.".format(mot))
exit()
else:
print("PENDU !!! Vous avez perdu.")
continuer_partie = input("Souhaitez-vous continuer la partie (O/N) ?")
continuer_partie = continuer_partie.lower()
Merci d'avance
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- From tkinter import *
- Win setup from usb - Télécharger - Utilitaires
- Apply update from adb traduction - Forum Téléphones & tablettes Android
- Fr import ✓ - Forum TV & Vidéo
- Android Recovery : comment accéder au mode de récupération - Guide
- Remove watermark from pdf - Télécharger - PDF
1 réponse
Bonjour
Voulant t'aider à réfléchir à ton souci, j'ai récupéré le code et j'ai constaté que la mise en forme est un peu olé olé et donc j'ai remis d'aplomb les indentations:
Reste maintenant ton souci de dessin du pendu dans ta fonction "tracer".
Je me suis permis d'ajouter la ligne 48 dans cette fonction afin de te mettre sur la piste de ton souci:
Bonnes Fêtes de Fin d'Année,
Ritchi
Voulant t'aider à réfléchir à ton souci, j'ai récupéré le code et j'ai constaté que la mise en forme est un peu olé olé et donc j'ai remis d'aplomb les indentations:
from random import*
from tkinter import*
def choisir_mot(liste):
"""Cette fonction renvoie le mot choisi dans la liste des mots
liste_mots. On utilise la fonction du module random ."""
i=randrange(len(liste))
return liste[i]
def mot_etoile(a):
"""Fonction permettant de remplacer les lettres par des etoiles """
l=len(a)
chaine=""
for i in range (0,l):
chaine=chaine+"*"
return chaine
def recup_lettre():
"""Cette fonction recupere une lettre saisie par
l'utilisateur. Si la chaine recuperee n'est pas une lettre,
on appelle en boucle la fonction jusqu'a obtenir une lettre"""
lettre = raw_input("Tapez une lettre: ")
lettre = lettre.lower()
if len(lettre)>1 or not lettre.isalpha():
print("Vous n'avez pas saisi une lettre valide.")
return recup_lettre()
else:
return lettre
#remplace le mot par des etoiles
def remplacer_mot_etoile(mot1,liste):
mot_cache = ""
for lettre in mot1:
if lettre in liste:
mot_cache += lettre
else :
mot_cache += "*"
return mot_cache
#cette definiton permet de faire les traits a la suite que si le precedent a ete fait
def tracer(n):
if n>=len(dessin_pendu):
print ("Pendu, vous avez perdu ! Le mot était: ", mot)
exit()
dessin=dessin_pendu[n]
print "dessin:", dessin
i=0
while i < 10:
if dessin[i+1] is not None :
dessin[i](dessin[i+1])
else:
dessin[i]()
i+=2
def chaine_lettre (liste):
lettres=''
for i in range (0,len(liste)):
lettres=lettres+'-'+liste[i]
return lettres.upper()
Fen=Tk()
Cans1=Canvas(Fen,width=150,height=120,background='yellow')
#Definition du dessin de pendu
dessin_pendu = [(Cans1.create_line(50,10,50,110)),
(Cans1.create_line(50,110,90,110)),
(Cans1.create_line(50,10,110,10)),
(Cans1.create_line(110,10,110,20)),
(Cans1.create_oval(100,20,120,40)),
(Cans1.create_line(110,40,110,80)),
(Cans1.create_line(110,55,90,45)),
(Cans1.create_line(110,55,130,45)),
(Cans1.create_line(110,80,130,90)),
(Cans1.create_line(110,80,90,90))]
#dessin du pendu
#la liste de mot:
liste_mot=[
"voiture",
"maison",
"pierre",
"portable",
"casque",
"ingenieur",
"son"]
# Notre variable pour savoir quand arreter la partie
continuer_partie = 'o'
#debut de la partie
while continuer_partie != 'n':
#Debut du jeu
lettres_trouvees = []
erreur = 0
mot=choisir_mot(liste_mot)
mot_trouve=remplacer_mot_etoile(mot,lettres_trouvees)
#Tant qu on n a pas trouve le mot et qu on n a pas epuise sa chance
while mot_trouve!=mot and erreur<9:
print("Mot a trouver {}".format(mot_trouve))
#ici , on execute la fonction recup_lettre
lettre = recup_lettre()
if lettre in lettres_trouvees: # La lettre a deja ete choisie
print("Vous avez deja choisi cette lettre.")
elif lettre in mot: # La lettre est dans le mot a trouver
lettres_trouvees.append(lettre)
print("Bien joue.")
else:#ce n'est pas la bonne lettre
lettres_trouvees.append(lettre)
tracer(erreur)
erreur+=1
print("... non, cette lettre ne se trouve pas dans le mot...")
mot_trouve=remplacer_mot_etoile(mot,lettres_trouvees)
print ('lettres proposées ',chaine_lettre(lettres_trouvees))
if mot==mot_trouve:
print("Félicitations! Vous avez trouvé le mot: %s" %(mot))
else:
print("PENDU !!! Vous avez perdu.")
# demander au joueur si il veut continuer la partie:
continuer_partie = raw_input("Souhaitez-vous refaire une partie (O/N) ?")
continuer_partie = continuer_partie.lower()
print("bye bye")
Reste maintenant ton souci de dessin du pendu dans ta fonction "tracer".
Je me suis permis d'ajouter la ligne 48 dans cette fonction afin de te mettre sur la piste de ton souci:
print "dessin:", dessin
Bonnes Fêtes de Fin d'Année,
Ritchi