IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Aide python pendu


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 4
    Points : 13
    Points
    13
    Par défaut Aide python pendu
    Bonjour à tous !
    J'ai besoin d'aide pour comprendre l'action du module Tkinter ?
    Je developpe actuellement un pendu et lorsque je lance mon code , ce dernier m'ouvre une fenetre raw input mais pas de fenetre tkinter pouvez vous m'aider ?

    Le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    from __future__ import division
    from random import choice
    import os
    from Tkinter import *
     
    coups_restants = 10 # Creation de la valeur nombre de coups restants
     
    dictionnaire=["maison","baguette","utilisateur","veste","stylo","lunettes","ordianteur","informatique","imprimante","chariot","merci","bonjour","avant","manger","mobile","boulangerie","sortir","rentrer","carte","boitier","trousse","clavier","micro","souris","chien","tapis","lapin","chien","chat","oiseau","physique","formule","musculation","muscle","machine","prise","poisson","champion","sport","opposer","composant","route","chemin","voiture","recette","usine","cuisne","chocolat","porc","ferme","gros","gras","lard","saucisson","anticonstitutionnellement","chien"]#création de la liste de mot
    # Création du dictionnaire )
     
     
    fenetre=Tk()
    e = Entry(fenetre)
    lettre_choisi=[]
    e.place(x=350,y=50)
    e.focus_set()
    def callback():
        lettre_choisi.append(e.get())
        e.delete(0,END)
        return lettre_choisi
    b = Button(fenetre, text="Entrer la lettre", width=10, command=callback)
    b.place(x=500,y=45)
    c=Canvas(fenetre,width=100,height=100,bg="red")
    c.place(x=250,y=100)
    bienvenue=Label(fenetre,text="Bienvene sur le jeu du pendu \n Bonne chance!")
    bienvenue.place(x=400,y=10)
    fenetre.minsize(width=1000, height=700)
     
     
     
    def demande_lettre () :
        lettre = raw_input (" Quelle lettre avez-vous choisi ? ") # demande la lettre choisie à l'utilisateur
        lettre =lettre.lower () # transforme le choix de l'utilisateur en mnuscules
        if len(lettre)>1 or not lettre.isalpha (): # vérification que la lettre choisi soit bien une lettre et une seule lettre
            print " on ne vous a demandé qu'une lettre "
            return demande_lettre() # revoi au debut de la fonction
        else :
            return lettre
     
    def recup_mot () :
        return choice(dictionnaire)
     
    def recup_mot_masque(mot_complet, lettres_trouvees) :# fonction permettant de gerer le présence * dans le mot caché
        mot_masque = ""
        for lettre in mot_complet:
            if lettre in lettres_trouvees : # verifie avec les lettres deja trouvees
                mot_masque += lettre# ajoute cete lettre au mot masque
            else:
                mot_masque += "*"#met une etoile dans le mot
        return mot_masque #donne le mot cache
     
     
     
     
    continuer_partie = 'o'# Notre variable pour savoir quand arrêter la partie
     
    while continuer_partie != 'n':
        mot_a_trouver = recup_mot()
        lettres_trouvees = []
        mot_trouve = recup_mot_masque(mot_a_trouver, lettres_trouvees)
        nb_chances = coups_restants
        while mot_a_trouver!=mot_trouve and nb_chances>0:
            print("Mot à trouver {0} (encore {1} chances)".format(mot_trouve, nb_chances))# ecrit l'avancement du mot à trouver et le nombre de coups restants
            lettre = demande_lettre()
            if lettre in lettres_trouvees: # La lettre a déjà été choisie
                print("Vous avez déjà choisi cette lettre.")
            elif lettre in mot_a_trouver: # La lettre est dans le mot à trouver
                lettres_trouvees.append(lettre)# ajoute la lettre dans la liste
                print("...Bien joué...")
            else:
                nb_chances -= 1# reduit les coups restants de 1
                lettres_trouvees.append(lettre)# ajoute la lettre dans la liste
                print("... non, cette lettre ne se trouve pas dans le mot...")
            mot_trouve = recup_mot_masque(mot_a_trouver, lettres_trouvees)
     
        if mot_a_trouver==mot_trouve  :# A-t-on trouvé le mot ou nos chances sont-elles épuisées ?
            print("Félicitations ! Vous avez trouvé le mot {0}.".format(mot_a_trouver))#fin du jeu et affichage du mot.
        else:
            print("PENDU !!! Vous avez perdu.Le mot a trouver etait {0}!".format(mot_a_trouver))#fin du jeu et affichage du mot.
    os.system("pause")
    fenetre.mainloop()
    Merci par avance !

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Question: à quoi servent le Entry et le Button ?

    Si la réponse est "à permettre au joueur d'entrer une lettre pour le mot à deviner." alors la question deviendra "À quoi sert le raw_input ?"

  3. #3
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 4
    Points : 13
    Points
    13
    Par défaut
    Bonsoir,
    Le raw-input est amené à disparaitre au profit de l'entry et du boutton.
    Merci.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 4
    Points : 13
    Points
    13
    Par défaut
    Le code revu et corrigé :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    from __future__ import division
    from random import choice
    import os
    from Tkinter import *
     
    coups_restants = 10 # Creation de la valeur nombre de coups restants
     
    dictionnaire=["maison","baguette","utilisateur","veste","stylo","lunettes","ordianteur","informatique","imprimante","chariot","merci","bonjour","avant","manger","mobile","boulangerie","sortir","rentrer","carte","boitier","trousse","clavier","micro","souris","chien","tapis","lapin","chien","chat","oiseau","physique","formule","musculation","muscle","machine","prise","poisson","champion","sport","opposer","composant","route","chemin","voiture","recette","usine","cuisne","chocolat","porc","ferme","gros","gras","lard","saucisson","anticonstitutionnellement","chien"]#création de la liste de mot
    # Création du dictionnaire )
     
     
    def demande_lettre () :
        lettre = raw_input (" Quelle lettre avez-vous choisi ? ") # demande la lettre choisie à l'utilisateur
        lettre =lettre.lower () # transforme le choix de l'utilisateur en mnuscules
        if len(lettre)>1 or not lettre.isalpha (): # vérification que la lettre choisi soit bien une lettre et une seule lettre
            print " on ne vous a demandé qu'une lettre "
            return demande_lettre() # revoi au debut de la fonction
        else :
            return lettre
     
    def recup_mot () :
        return choice(dictionnaire)
     
    def recup_mot_masque(mot_complet, lettres_trouvees) :# fonction permettant de gerer le présence * dans le mot caché
        mot_masque = ""
        for lettre in mot_complet:
            if lettre in lettres_trouvees : # verifie avec les lettres deja trouvees
                mot_masque += lettre# ajoute cete lettre au mot masque
            else:
                mot_masque += "*"#met une etoile dans le mot
        return mot_masque #donne le mot cache
     
    def callback():
        lettre_choisi.append(e.get())
        e.delete(0,END)
        return lettre_choisi
     
     
     
    continuer_partie = 'o'# Notre variable pour savoir quand arrêter la partie
     
    while continuer_partie != 'n':
        fenetre=Tk()
        c=Canvas(fenetre,width=100,height=100,bg="red")
        c.place(x=250,y=100)
        bienvenue=Label(fenetre,text="Bienvene sur le jeu du pendu \n Bonne chance!")
        bienvenue.place(x=400,y=10)
        fenetre.minsize(width=1000, height=700)
        mot_a_trouver = recup_mot()
        lettres_trouvees = []
        mot_trouve = recup_mot_masque(mot_a_trouver, lettres_trouvees)
        nb_chances = coups_restants
        while mot_a_trouver!=mot_trouve and nb_chances>0:
            print("Mot à trouver {0} (encore {1} chances)".format(mot_trouve, nb_chances))# ecrit l'avancement du mot à trouver et le nombre de coups restants
            e = Entry(fenetre)
            lettre_choisi=[]
            e.place(x=350,y=50)
            e.focus_set()
            b = Button(fenetre, text="Entrer la lettre", width=10, command=callback)
            b.place(x=500,y=45)
            lettre=str(lettre_choisi)
            if lettre in lettres_trouvees: # La lettre a déjà été choisie
                print("Vous avez déjà choisi cette lettre.")
            elif lettre in mot_a_trouver: # La lettre est dans le mot à trouver
                lettres_trouvees.append(lettre)# ajoute la lettre dans la liste
                print("...Bien joué...")
            else:
                nb_chances -= 1# reduit les coups restants de 1
                lettres_trouvees.append(lettre)# ajoute la lettre dans la liste
                print("... non, cette lettre ne se trouve pas dans le mot...")
            mot_trouve = recup_mot_masque(mot_a_trouver, lettres_trouvees)
     
        if mot_a_trouver==mot_trouve  :# A-t-on trouvé le mot ou nos chances sont-elles épuisées ?
            print("Félicitations ! Vous avez trouvé le mot {0}.".format(mot_a_trouver))#fin du jeu et affichage du mot.
        else:
            print("PENDU !!! Vous avez perdu.Le mot a trouver etait {0}!".format(mot_a_trouver))#fin du jeu et affichage du mot.
    os.system("pause")
    fenetre.mainloop()
    Merci !

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Le mot clef "while" signifie "tant que", il s'agit donc d'une boucle qui s'éternisera jusqu'à ce condition ou un break n'y mette fin.

    En plaçant la création de tes widgets dans cette boucle, est-ce que tu réalises que tu vas recréer ces widgets à la vitesse que ta machine permet, c'est-à-dire très très vite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        while mot_a_trouver!=mot_trouve and nb_chances>0:
            print("Mot à trouver {0} (encore {1} chances)".format(mot_trouve, nb_chances))
            e = Entry(fenetre)        # on crée une nouvelle fenêtre à chaque boucle !
            lettre_choisi=[]
            e.place(x=350,y=50)
            e.focus_set()
            b = Button(fenetre, text="Entrer la lettre", width=10, command=callback) # on crée un nouveau bouton à chaque boucle !
            b.place(x=500,y=45)
            lettre=str(lettre_choisi)    # le joueur n'a pas encore eu le temps d'entrer une lettre !
    Crée ta fenêtre en un seul bloc de code, et ensuite traite les entrées du joueur à partir de la fonction callback.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 4
    Points : 13
    Points
    13
    Par défaut
    Le probleme est que le " if lettre in lettre trouvees " necessite que la liste lettre soit en str . Or si jamais je met lettre=str(lettre_choisi) alors le programme m'affiche en boucle " Mot à trouver ****** (encore x chances )

    Je bloque la dessus depuis un moment, désolé si mes questions peuvent paraître bete mais je debute !

Discussions similaires

  1. Aide python mini projet ISN
    Par Trirouson dans le forum Général Python
    Réponses: 22
    Dernier message: 19/12/2013, 20h01
  2. Aide Python [From turtle import*]
    Par tuture38 dans le forum Général Python
    Réponses: 3
    Dernier message: 16/02/2013, 15h40
  3. Demande d'aide pour extraire des données Excel à l'aide python
    Par userinfo dans le forum Général Python
    Réponses: 5
    Dernier message: 05/01/2013, 11h45
  4. Aide Python et Apache 2
    Par otobenzina dans le forum Linux
    Réponses: 1
    Dernier message: 12/05/2012, 10h04
  5. aide python et apache2
    Par otobenzina dans le forum Apache
    Réponses: 1
    Dernier message: 12/05/2012, 01h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo