Olá! Meu jogo de forca está dando um erro. Ele coloca uma casa a mais de '_' do que deveria, impossibilitando o jogador de acertar a palavra secreta.
Conferi passo a passo o meu código com o código do Nico três vezes mas parece igual (com exceção de alguns nomes que estão diferentes). Enfim, não encontro o erro. Estou usando o .split() para tirar o \n do final de cada palavra, será que ele não está funcionando?
Se alguém puder dar uma conferida no meu código agradeço.
Abraços
import random
def jogar():
mensagem_abertura()
palavra_secreta = carrega_palavra_secreta()
letras_acertadas = iniciliza_letras_acertadas(palavra_secreta)
imprime_letras_acertadas(letras_acertadas)
enforcou = False
acertou = False
erros = 0
while not enforcou and not acertou:
chute = pede_chute()
if chute in palavra_secreta:
chute_na_posicao_correta(chute, letras_acertadas, palavra_secreta)
else:
erros += 1
desenha_forca(erros)
enforcou = erros == 7
acertou = '_' not in letras_acertadas
print(letras_acertadas)
if acertou:
imprime_mensagem_vencedor()
else:
imprime_mensagem_perdedor(palavra_secreta)
print("Fim do jogo.")
def desenha_forca(erros):
print(" _______ ")
print(" |/ | ")
if(erros == 1):
print(" | (_) ")
print(" | ")
print(" | ")
print(" | ")
if(erros == 2):
print(" | (_) ")
print(" | \ ")
print(" | ")
print(" | ")
if(erros == 3):
print(" | (_) ")
print(" | \| ")
print(" | ")
print(" | ")
if(erros == 4):
print(" | (_) ")
print(" | \|/ ")
print(" | ")
print(" | ")
if(erros == 5):
print(" | (_) ")
print(" | \|/ ")
print(" | | ")
print(" | ")
if(erros == 6):
print(" | (_) ")
print(" | \|/ ")
print(" | | ")
print(" | / ")
if (erros == 7):
print(" | (_) ")
print(" | \|/ ")
print(" | | ")
print(" | / \ ")
print(" | ")
print("_|___ ")
print()
def imprime_mensagem_vencedor():
print("Parabéns, você ganhou!")
print(" ___________ ")
print(" '._==_==_=_.' ")
print(" .-\\: /-. ")
print(" | (|:. |) | ")
print(" '-|:. |-' ")
print(" \\::. / ")
print(" '::. .' ")
print(" ) ( ")
print(" _.' '._ ")
print(" '-------' ")
def imprime_mensagem_perdedor(palavra_secreta):
print("Puxa, você foi enforcado!")
print("A palavra era {}".format(palavra_secreta))
print(" _______________ ")
print(" / \ ")
print(" / \ ")
print("// \/\ ")
print("\| XXXX XXXX | / ")
print(" | XXXX XXXX |/ ")
print(" | XXX XXX | ")
print(" | | ")
print(" \__ XXX __/ ")
print(" |\ XXX /| ")
print(" | | | | ")
print(" | I I I I I I I | ")
print(" | I I I I I I | ")
print(" \_ _/ ")
print(" \_ _/ ")
print(" \_______/ ")
def pede_chute():
chute = input("Tente acertar uma letra: ")
chute = chute.strip().lower()
return chute
def chute_na_posicao_correta(chute, letras_acertadas, palavra_secreta):
index = 0
for letra in palavra_secreta:
if chute == letra:
letras_acertadas[index] = letra
index += 1
def mensagem_abertura():
print("*" * 40)
print("Bem vindo ao jogo de Forca!")
print("*" * 40)
def carrega_palavra_secreta():
arquivo = open("frutas.txt", "r")
frutas = []
for fruta in arquivo:
fruta.strip()
frutas.append(fruta)
arquivo.close()
numero = random.randrange(0, len(frutas))
palavra_secreta = frutas[numero].lower()
return palavra_secreta
def iniciliza_letras_acertadas(palavra_secreta):
return ['_' for letra in palavra_secreta]
def imprime_letras_acertadas(letras_acertadas):
print(f"A palavra secreta tem {(len(letras_acertadas))} letras.")
if (__name__ == "__main__"):
jogar()