Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2723 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Pendu Tkinter

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pendu Tkinter

n°2228980
naxe4
Posté le 25-05-2014 à 18:41:24  profilanswer
 

Bonjour, actuellement en Terminale S, je dois rendre mon projet d'ISN dans la semaine, nous avons actuellement une version console du jeu, mais nous n'arrivons pas à l'adapter sur Tkinter pour la rendre plus présentable le jour de l'oral..
Voici le code :  

Code :
  1. from donnees import *
  2. from random import choice
  3. def recup_lettre():
  4.     lettre = input("Tapez une lettre: " )
  5.     lettre = lettre.lower()
  6.     if len(lettre)>1 or not lettre.isalpha():
  7.         print("Vous n'avez pas saisi une lettre valide." )
  8.         return recup_lettre()
  9.     else:
  10.         return lettre
  11. def choisir_mot() :
  12.     return choice(dictionnaire)
  13. def recup_mot_masque(mot_complet, lettres_trouvees):
  14.     mot_masque = ""
  15.     for lettre in mot_complet:
  16.         if lettre in lettres_trouvees:
  17.             mot_masque += lettre
  18.         else:
  19.             mot_masque += "*"
  20.     return mot_masque
  21. continuer = 'Oui'
  22. while continuer == 'Oui':
  23.     mot_a_trouver = choisir_mot()
  24.     lettres_trouvees = []
  25.     mot_trouve = recup_mot_masque(mot_a_trouver, lettres_trouvees)
  26.     while mot_a_trouver!=mot_trouve and chances>0:
  27.         print("Mot à trouver {0} (encore {1} chances)".format(mot_trouve, chances))
  28.         lettre = recup_lettre()
  29.         if lettre in lettres_trouvees:
  30.             print("Vous avez déjà choisi cette lettre." )
  31.         elif lettre in mot_a_trouver:
  32.             lettres_trouvees.append(lettre)
  33.             print("Bien joué." )
  34.         else:
  35.             chances -= 1
  36.             print("Cette lettre ne se trouve pas dans le mot" )
  37.         mot_trouve = recup_mot_masque(mot_a_trouver, lettres_trouvees)
  38.     if mot_a_trouver==mot_trouve:
  39.         print("Félicitations ! Vous avez trouvé le mot {0}.".format(mot_a_trouver))
  40.     else:
  41.         print("PENDU ! Vous avez perdu." )
  42.     continuer = input("Souhaitez-vous continuer la partie (O/N) ? " )
  43.     if continuer == 'O':
  44.         continuer = 'Oui'
  45.         chances=8
  46.     else :
  47.         continuer = 'Non'

mood
Publicité
Posté le 25-05-2014 à 18:41:24  profilanswer
 

n°2229040
masklinn
í dag viðrar vel til loftárása
Posté le 26-05-2014 à 09:55:32  profilanswer
 

1. Et donc? Avec quoi faut-il de l'aide spécifiquement?
2. Il n'y a pas de séparation entre le modèle (la logique de résolution — du pendu) et l'IO, pas de contrat entre un système d'exécution d'un jeu de pendu et une interface qui se placerait devant, il semble peu étonnant que le portage soit difficile.


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2229141
naxe4
Posté le 26-05-2014 à 18:00:03  profilanswer
 

c'est bon, on est entrain de voir ça avec notre prof, par contre j'ai une question, comme faire pour afficher la première lettre et la dernière lettre du mot à la base?

n°2229147
masklinn
í dag viðrar vel til loftárása
Posté le 26-05-2014 à 18:28:31  profilanswer
 

naxe4 a écrit :

c'est bon, on est entrain de voir ça avec notre prof, par contre j'ai une question, comme faire pour afficher la première lettre et la dernière lettre du mot à la base?


s[0] et s[-1]?


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2229165
naxe4
Posté le 26-05-2014 à 20:57:54  profilanswer
 

J'avais pensé à un truc dans le genre  
 
etoiles=""
mot="mot_a_trouver"
for i in range (1,len(mot)-1):
                etoiles=etoiles+"*"
print(mot[0]+etoiles+mot[len(mot)-1])

n°2229168
masklinn
í dag viðrar vel til loftárása
Posté le 26-05-2014 à 21:08:07  profilanswer
 

naxe4 a écrit :

J'avais pensé à un truc dans le genre

 

etoiles=""
mot="mot_a_trouver"
for i in range (1,len(mot)-1):
                etoiles=etoiles+"*"
print(mot[0]+etoiles+mot[len(mot)-1])


C'est n'importe quoi.

 

1. pas besoin de prendre la longueur de la chaîne, tu peux indexer de la fin (s[-1] donne le même résultat que s[len(s) - 1] mais est lisible et plus efficace)
2. si tu veux accumuler une chaîne, utilise une list et ''.join() à la fin
3. tu peux n-upler une chaîne en la multipliant (par un entier)
4. string formatting

 
Code :
  1. print("{first}{blanked}{last}".format(
  2.    first=word[0],
  3.    last=word[-1],
  4.    blanked='*' * (len(word) - 2)))


Message édité par masklinn le 26-05-2014 à 21:08:45

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2229173
naxe4
Posté le 26-05-2014 à 21:25:08  profilanswer
 

blanked représente toutes les autres lettres du mot?
 
J'ai pas bien compris l'utilité du .format() et le len(word) - 2  :??:

n°2229178
masklinn
í dag viðrar vel til loftárása
Posté le 26-05-2014 à 22:13:32  profilanswer
 

naxe4 a écrit :

blanked représente toutes les autres lettres du mot?


oui.

naxe4 a écrit :

J'ai pas bien compris l'utilité du .format()


Plus clair, évite de faire des concaténations.

naxe4 a écrit :

et le len(word) - 2  :??:


Tu veux tout remplacer par des étoiles sauf les extrémités non? Donc le nombre d'étoiles est la longueur du mot, moins la première lettre, moins la dernière lettre. Soit len(word) - 2.


Message édité par masklinn le 26-05-2014 à 22:13:37

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2229179
naxe4
Posté le 26-05-2014 à 22:25:51  profilanswer
 

okkkk! Je ne sais pas où l'intégrer à mon programme..
Et j'ai juste une dernière question pour être prêt pour mon oral, j'arrive pas à expliquer la ligne  "mot_trouve = recup_mot_masque(mot_a_trouver, lettres_trouvees)"


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Pendu Tkinter

 

Sujets relatifs
Interface tkinterTkinter récupérer une variable radio bouton dans un label
clic et logique booléenne avec tkinterProblème fenêtre surnuméraire Tkinter [RESOLU]
Reaction bouton Tkinter[JAVA] Arbre lexicographique, jeu Pendu
[Débutant] Module Turtle et TkinterProgramme de traitement image PGM binaire (tableau2D)
problème réalisation tableau périodique tkinter[Tkinter] Attribuer une nouvelle valeur à une valeur avec un bouton
Plus de sujets relatifs à : Pendu Tkinter


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)