Jeu du pendu

edouardPRGM
Modifié (September 2022) dans Informatique théorique
Bonjour j'aimerai coder un jeu du pendu (ou l'on doit trouver les lettres correspondant à un mot inconnu dans un nombre de tentative limité) et je n'arrive pas bien à afficher le pendu que se "pend" progressivement lorsque je trouve une lettre fausse je vous joins le programme. pour mieux comprendre je vous conseille de l'exécuter une première fois en entier et une seconde sans le dernier else. (4 dernières lignes) Merci infiniment.
import random
def dessinPendu(nb):

    tab=[
    """
    +-------+
    |
    |
    |
    |
    |
    ==============
    """,
    """
    +-------+
    | |
    | O
    |
    |
    |
    ==============
    """
    ,
    """
    +-------+
    | |
    | O
    | |
    |
    |
    ==============
    """,
    """
    +-------+
    | |
    | O
    | -|
    |
    |
    ==============
    """,
    """
    +-------+
    | |
    | O
    | -|-
    |
    |
    ==============
    """,
    """
    +-------+
    | |
    | O
    | -|-
    | |
    |
    ==============
    """,
    """
    +-------+
    | |
    | O
    | -|-
    | | |
    |
    ==============
    """
    ]
    return tab[nb]
l=["ANGLE",
"ARMOIRE",
"BANC",
"BUREAU",
"CABINET",
"CARREAU",
"CHAISE",
"CLASSE",
"CLEF",
"COIN",
"COULOIR",
"DOSSIER",
"EAU",
"ECOLE",
"ENTRER",
"ESCALIER"]

mot=l[random.randint(0,len(l)-1)]
print(mot)

p="*"*len(mot)
pl=list(p)
print(p)
r=1
n=0
li=list(mot)
r=1
ind=[]
while r==1:

    a=input("lettre :")


    for i in range(len(li)):
        if li[i]==a:
            ind.append(i)

    for k in mot:

        if k==a:
            index=li.index(a)
            print("bravo")
            for j in ind:
                pl[j]=a
            print(' '.join(pl))
            break
        else:
            print(dessinPendu(n))
            n=n+1
            break

Réponses

  • Il te manque les "\n" pour afficher les fins de ligne.
    Algebraic symbols are used when you do not know what you are talking about.
            -- Schnoebelen, Philippe
  • fm_31
    Modifié (January 2022)
    Bonjour,
    ça manque aussi de commentaires.
    Il y a deux "if"  et un seul "else". On ne sait à quel "if" il se rapporte 
    Cordialement.
    """  pendu ------------------------------------------------------------------------
    --
    --
    -------------------------------------------------------------------------------"""
    import random

    def dessinPendu(nb):
        tab=[ """ +-------+ | | | | | ============== """,
              """ +-------+ | | | O | | | ============== """ ,
              """ +-------+ | | | O | | | | ============== """,
              """ +-------+ | | | O | -| | | ============== """,
              """ +-------+ | | | O | -|- | | ============== """,
              """ +-------+ | | | O | -|- | | | ============== """,
              """ +-------+ | | | O | -|- | | | | ============== """ ]
        return tab[nb]

    l=["ANGLE", "ARMOIRE", "BANC", "BUREAU", "CABINET", "CARREAU", "CHAISE",
                          "CLASSE", "CLEF", "COIN", "COULOIR", "DOSSIER", "EAU", "ECOLE", "ENTRER", "ESCALIER"]
    mot=l[random.randint(0,len(l)-1)]
    print("mot tiré : " , mot)
    p="*"*len(mot)
    pl=list(p)
    print("p =" , p)
    r=1
    n=0
    li=list(mot)
    r=1
    ind=[]
    while r==1:
        a=input("lettre :")
        
        for i in range(len(li)):
            if li[i]==a:
                ind.append(i)
                for k in mot:
                  if k==a:
                    index=li.index(a)
                    print("bravo")
                    for j in ind:
                        pl[j]=a
                        print(' '.join(pl))
                        break
                  else:
                    print(dessinPendu(n))
                    n=n+1
                    break
  • Rescassol
    Modifié (January 2022)
    Bonjour
    De toutes façons, c'est illisible en l'état.
    La moindre des choses est de se relire.
    Cordialement,
    Rescassol
  • d'accord merci à tous je vais corriger l'erreur
Connectez-vous ou Inscrivez-vous pour répondre.