Secret Word Preview Does Not Update - Hangman Game

Asked

Viewed 38 times

1

I’m testing the following code:

#Jogo da forca
#Funções
def cls():
    import os
    os.system("cls")
def check_letra(letra):
    for letras in palavra:
        if letra == letras:
            return True
def palavra():
    p_N = True
    while p_N:
        senha = str(input("Digite uma palavra secreta: "))
        if senha.isalpha():
            p_N = False
            return senha
        else:
            p_N = True
            print("Digite uma palavra válida! ")
            print()
            continue
def desenho(erros):
    if erros == 0:
        print()
        print("|----- ")
        print("|    | ")
        print("|      ")
        print("|      ")
        print("|      ")
        print("|      ")
        print("_      ")
        print()
    elif erros == 1:
        print()
        print("|----- ")
        print("|    | ")
        print("|    O ")
        print("|      ")
        print("|      ")
        print("|      ")
        print("_      ")
        print()
    elif erros == 2:
        print()
        print("|----- ")
        print("|    | ")
        print("|    O ")
        print("|    | ")
        print("|    | ")
        print("|      ")
        print("_      ")
        print()
    elif erros == 3:
        print()
        print("|----- ")
        print("|    | ")
        print("|    O ")
        print("|    |\\ ")
        print("|    | ")
        print("|      ")
        print("_      ")
        print()
    elif erros == 4:
        print()
        print("|----- ")
        print("|    | ")
        print("|    O ")
        print("|   /|\\ ")
        print("|    | ")
        print("|      ")
        print("_      ")
        print()
    elif erros == 5:
        print()
        print("|----- ")
        print("|    | ")
        print("|    O ")
        print("|   /|\\ ")
        print("|    | ")
        print("|     \\ ")
        print("_      ")
        print()
    elif erros == 6:
        print()
        print("|----- ")
        print("|    | ")
        print("|    O ")
        print("|   /|\\ ")
        print("|    | ")
        print("|   / \\ ")
        print("_      ")
        print()
#Jogo
perguntarNovamente = True
game_on = True
while game_on:
    palavra_secreta = palavra()
    senha_list = [l for l in palavra_secreta]
    chances = 6
    tentativas = []
    #Esconder palavra
    for i in range(101):
        print()
    print (senha_list) #APENAS PARA TESTE
    #Começo do jogo
    erros = 0 # AQUI => inicializa a variável erros fora do looping principal
    while perguntarNovamente:
        print("A palavra:","_ "*len(senha_list))
        desenho(erros)
        an = input("Digite uma letra(ou a palavra): ")
        if an == palavra_secreta:
            print("Parabéns você acertou!!")
            break
        elif an not in(senha_list):
            if an in(tentativas):
                print("Você já tentou essa letra!")
                continue
            else:
                print("Não há essa letra na palavra!")
                tentativas.append(an)
                erros +=1
                continue
        else:
            print("Você acertou uma letra!")
            tentativas.append(an)
            continue
    break

What should I add so that every right letter the gallows update and show in the correct position?

For example: I put the word "Leandro". At some point I typed the letter "a" in order to get it right:

inserir a descrição da imagem aqui

But I would like the letter "a" to be in the position where it should be. Instead of remaining the "_", the letter "a".

inserir a descrição da imagem aqui

2 answers

1

Make the following changes:

senha_list = ["_ " for l in palavra_secreta]
...
print("A palavra:", " ".join(senha_list))
...
elif an not in palavra_secreta:
...
print("Você acertou uma letra!")
for i, char in enumerate(palavra_secreta):
    if char == an:
        senha_list[i] = an
tentativas.append(an)
continue

0

Code containing the information from Murilo Sitonio

#Jogo da forca
#Funções
def cls():
    import os
    os.system("cls")
def check_letra(letra):
    for letras in palavra:
        if letra == letras:
            return True
def palavra():
    p_N = True
    while p_N:
        senha = str(input("Digite uma palavra secreta: "))
        if senha.isalpha():
            p_N = False
            return senha
        else:
            p_N = True
            print("Digite uma palavra válida! ")
            print()
            continue
def desenho(erros):
    if erros == 0:
        print()
        print("|----- ")
        print("|    | ")
        print("|      ")
        print("|      ")
        print("|      ")
        print("|      ")
        print("_      ")
        print()
    elif erros == 1:
        print()
        print("|----- ")
        print("|    | ")
        print("|    O ")
        print("|      ")
        print("|      ")
        print("|      ")
        print("_      ")
        print()
    elif erros == 2:
        print()
        print("|----- ")
        print("|    | ")
        print("|    O ")
        print("|    | ")
        print("|    | ")
        print("|      ")
        print("_      ")
        print()
    elif erros == 3:
        print()
        print("|----- ")
        print("|    | ")
        print("|    O ")
        print("|    |\\ ")
        print("|    | ")
        print("|      ")
        print("_      ")
        print()
    elif erros == 4:
        print()
        print("|----- ")
        print("|    | ")
        print("|    O ")
        print("|   /|\\ ")
        print("|    | ")
        print("|      ")
        print("_      ")
        print()
    elif erros == 5:
        print()
        print("|----- ")
        print("|    | ")
        print("|    O ")
        print("|   /|\\ ")
        print("|    | ")
        print("|     \\ ")
        print("_      ")
        print()
    elif erros == 6:
        print()
        print("|----- ")
        print("|    | ")
        print("|    O ")
        print("|   /|\\ ")
        print("|    | ")
        print("|   / \\ ")
        print("_      ")
        print()
#Jogo
perguntarNovamente = True
game_on = True
while game_on:
    palavra_secreta = palavra()
    senha_list = ["_ " for l in palavra_secreta]
    chances = 6
    tentativas = []
    #Esconder palavra
    for i in range(101):
        print()
    print (senha_list) #APENAS PARA TESTE
    #Começo do jogo
    erros = 0 # AQUI => inicializa a variável erros fora do looping principal
    while perguntarNovamente:
        print("A palavra:", " ".join(senha_list))
        desenho(erros)
        an = input("Digite uma letra(ou a palavra): ")
        if an == palavra_secreta:
            print("Parabéns você acertou!!")
            break
        elif an not in palavra_secreta:
            if an in(tentativas):
                print("Você já tentou essa letra!")
                continue
            else:
                print("Não há essa letra na palavra!")
                tentativas.append(an)
                erros +=1
                continue
        else:
            print("Você acertou uma letra!")
            for i, char in enumerate(palavra_secreta):
                if char == an:
                    senha_list[i] = an
            tentativas.append(an)
            continue
    break

Browser other questions tagged

You are not signed in. Login or sign up in order to post.