Python Hangman Game

Asked

Viewed 8,320 times

5

I’m doing a Python hangman game. Every loop the program asks the letter or word:

#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
    while perguntarNovamente:
        print("A palavra:","_ "*len(senha_list))
        erros = 0
        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

Each time the player puts a wrong letter the variable erros increases by 1, so I use it as a parameter to call the function desenho drawing the hangman and puppet according to the number of errors:

def desenho(erros):
if erros == 0:
    print()
    print("|----- ")
    print("|    | ")
    print("|      ")
    print("|      ")
    print("|      ")
    print("|      ")
    print("_      ")
    print()
 #Não botei todos!! e está indentado!
 elif erros == 6:
    print()
    print("|----- ")
    print("|    | ")
    print("|    O ")
    print("|   /|\\ ")
    print("|    | ")
    print("|   / \\ ")
    print("_      ")
    print()

But with the increase of the variable erros drawing does not change accordingly! How can I solve?

Code link: https://repl.it/Dbef/0

1 answer

7


Inside the looping while perguntarNovamente:, you are initiating the variable erros = 0, therefore, every time the looping is executed, this variable returns to zero.

A possible solution is to initialize erros before entering the looping:

#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)
    ...

Browser other questions tagged

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