Partage
  • Partager sur Facebook
  • Partager sur Twitter

jeu du pendu [2]

Sujet résolu
    6 octobre 2012 à 11:00:07

    coucou tout le monde
    je suis toujours sur mon jeu du pendu depuis 2 semaine , mais je passerai pas au prochain chapitre avant d'avoir reussi
    alors voila , j'ai un petit soucis

    par exemple si je génére le mot "garage"
    et que j'entre la lettre "a"
    il va s'afficher sa : "*a*a**"
    le problème c'est que que quand il me redemande une lettre , il ne prend pas en compte les lettres trouvée

    voila mon code source

    pendu.py

    !/usr/local/bin/python3.2
    # -*-coding:Utf-8 -*
    
    #on declare ce qu'on a besoin de lié
    from donnees import *
    from fonctions import *
    
    
    #on test si cela est ok
    mot_aleatoire = choix_mot_depart()
    print(mot_aleatoire,"OK")
    
    while nombre_de_coup > 0:
            print("vous avez",nombre_de_coup,"chances avant d'etre pendu")
            lettre_choisi = recup_lettre()
            print("vous avez tapé la lettre",lettre_choisi)
    
    
    #fonctiont test a deplacer quand cela marchera dans fonction.py
            mot_chercher = mot_aleatoire
            mot_chercher = list(mot_chercher)
            i = 0
            while i < len(mot_aleatoire):
                    if lettre_choisi == mot_aleatoire[i]:
                            mot_chercher[i] = lettre_choisi
                            i = i + 1
                    else:
                            mot_chercher[i] = "*"
                            i = i + 1
            nombre_de_coup = nombre_de_coup - 1
            print("il vous reste",nombre_de_coup,"coups")
            print(mot_chercher)
    


    donnees.py

    #!/usr/local/bin/python3.2
    # -*-coding:Utf-8 -*
    
    nombre_de_coup = 8 
    
    liste_de_mots = [
        "armoire",
        "boucle",
        "buisson",
        "chaise",
        "carton",
        "couteau",
        "fichier",
        "garage",
        "glace",    
        "journal",
        "kiwi",
        "lampe",
        "liste",
        "montagne",
        "remise",
        "sandale",
        "taxi",
        "vampire",
        "volant",
    ]
    


    fonctions.py

    #!/usr/local/bin/python3.2
    # -*-coding:Utf-8 -*
    
    from random import choice
    from donnees import * 
    
    def choix_mot_depart():
        return    choice(liste_de_mots)
    
    def recup_lettre():
        lettre = input("taper 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
    


    voila un exemple

    kiwi OK
    vous avez 8 chances avant d'etre pendu
    taper une lettre : i
    vous avez tapé la lettre i
    il vous reste 7 coups
    ['*', 'i', '*', 'i']
    vous avez 7 chances avant d'etre pendu
    taper une lettre : b
    vous avez tapé la lettre b
    il vous reste 6 coups
    ['*', '*', '*', '*']
    • Partager sur Facebook
    • Partager sur Twitter

    On estime à environ 550 millions le nombre d'armes à feu actuellement en circulation. Autrement dit il y a un homme sur douze qui est armé sur cette planète. La seule question c'est … comment armer les onze autres ?

      6 octobre 2012 à 11:14:42

      ....
                      else:
                              mot_chercher[i] = "*"
                              i = i + 1
      


      tu dis que si le caractère à l'index i n'est pas bon, alors mettre un "*".
      Or, s'il y a déjà un "*" c'est pas peine la mettre un "*",
      et si c'est un caractère différent de "*", c'est que c'est une lettre qui à déjà été trouvé ...

      dans "KIWI" tu places tes 'I', puis quand tu entres un 'B', 'I' étant différent de 'B' tu le remplaces par un '*' ...

      tu vois ?
      • Partager sur Facebook
      • Partager sur Twitter

      Python c'est bon, mangez-en. 

      Anonyme
        6 octobre 2012 à 11:26:04

        Voilà un petit exemple vite fait, j'ai pas eu le temps de regarder, mais vite fait je pense à une erreur dans l'initialisation de ta liste concernant ton mot caché.

        Un code vite fait pour t'aider à comprendre l'initialisation.

        >>> mot = "armoire"
        >>> mot_cache = ['_' for letter in mot]
        >>> mot_cache
        ['_', '_', '_', '_', '_', '_', '_']
        >>> terminate = False
        >>> while terminate == False:
        ...     if ''.join(mot_cache) == mot:
        ...         terminate = True
        ...     else:
        ...         letter = input("Enter the letter : ")
        ...         for ind, char in enumerate(mot):
        ...             if char == letter:
        ...                 mot_cache[ind] = letter
        ...         print(mot_cache)
        ... 
        Enter the letter : a
        ['a', '_', '_', '_', '_', '_', '_']
        Enter the letter : r
        ['a', 'r', '_', '_', '_', 'r', '_']
        Enter the letter : e
        ['a', 'r', '_', '_', '_', 'r', 'e']
        Enter the letter : m
        ['a', 'r', 'm', '_', '_', 'r', 'e']
        Enter the letter : p
        ['a', 'r', 'm', '_', '_', 'r', 'e']
        Enter the letter : o
        ['a', 'r', 'm', 'o', '_', 'r', 'e']
        Enter the letter : i
        ['a', 'r', 'm', 'o', 'i', 'r', 'e']
        


        évitez la boucle while quand vous pouvez le faire, c'est le cas pour la 2ème boucle du code d'origine.

        recup_lettre() est simplement une fonction input(), je vois pas trop l'intérêt de modifier le nom.

        Il me semble que c'est dans le bloc else que se trouve le problème.

        • Partager sur Facebook
        • Partager sur Twitter
          8 octobre 2012 à 19:35:46

          merci bien ;) en effet , la boucle réecrivé a chaque passage une "*" donc sa remeter le mot en etoiles

          • Partager sur Facebook
          • Partager sur Twitter

          On estime à environ 550 millions le nombre d'armes à feu actuellement en circulation. Autrement dit il y a un homme sur douze qui est armé sur cette planète. La seule question c'est … comment armer les onze autres ?

          jeu du pendu [2]

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown