Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
658 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've never understood the compulsion to use Web technologies minus the Web's security and deployment models. It seems a bit like throwing the orange away and eating the peel. — @ justinschuh‬
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've never understood the compulsion to use Web technologies minus the Web's security and deployment models. It seems a bit like throwing the orange away and eating the peel. — @ justinschuh‬
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've never understood the compulsion to use Web technologies minus the Web's security and deployment models. It seems a bit like throwing the orange away and eating the peel. — @ justinschuh‬
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've never understood the compulsion to use Web technologies minus the Web's security and deployment models. It seems a bit like throwing the orange away and eating the peel. — @ justinschuh‬
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-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR