Ao encapsular o código em funções, ele entrou em loop infinito e não entendo como resolver:
import jogos
import random
def iniciar_jogo():
boas_vindas()
palavra_secreta = gera_palavra_secreta()
letras_acertadas = inicializa_palavra(palavra_secreta)
chute = requisita_chute()
erro = 0
acertou = False
enforcou = False
while(not acertou and not enforcou):
if(chute in palavra_secreta):
verifica_posicao_do_chute(chute, palavra_secreta, letras_acertadas)
else:
print("A palavra secreta não possui esta letra")
erro += 1
enforcou = erro == 6
acertou = "_" not in letras_acertadas
if(acertou):
ganhou()
else:
perdeu()
def boas_vindas():
print("*******************************")
print("* Bem vindo ao Jogo da Forca! *")
print("*******************************")
nome_do_jogador = input("Qual o seu nome?\n")
print("Bem vindo {}, vamos começar?\n".format(nome_do_jogador))
def gera_palavra_secreta():
lista_possiveis_palavras = []
arquivo_de_palavras = open("possiveis_palavras.txt", "r")
for linha in arquivo_de_palavras:
lista_possiveis_palavras.append(linha.strip())
arquivo_de_palavras.close()
palavra_escolhida = random.randrange(0, len(lista_possiveis_palavras))
palavra_secreta = lista_possiveis_palavras[palavra_escolhida].upper()
return palavra_secreta
def inicializa_palavra(palavra_secreta):
letras_acertadas = ["_" for letra in palavra_secreta]
print(letras_acertadas, "\n")
return letras_acertadas
def requisita_chute():
chute = input("Qual a letra escolhida?\n").strip().upper()
return chute
def verifica_posicao_do_chute(chute, palavra_secreta, letras_acertadas):
posicao_da_letra = 0 #index que passa cada letra pelo for antes mesmo de ser testada pelo if e portanto, eh capaz de passar a posição de cada letra antes da verificação condicional de cada letra
for letra in palavra_secreta:
if (chute == letra):
letras_acertadas[posicao_da_letra] = letra #substitui os caracteres da lista pela letra acertada em sua respectiva posição
print(" *")
print("Letra * {} * encontrada na posição {}".format(letra, posicao_da_letra + 1))
print(" *\n")
print(letras_acertadas, "\n")
posicao_da_letra += 1
def ganhou():
print("Parabens, voce acertou a palavra secreta")
def perdeu():
perdeu = input("Voce foi enforcado, deseja tentar novamente? sim/nao\n")
if (perdeu == "sim"):
iniciar_jogo()
else:
jogos.escolhe_jogo()
if(__name__ == "__main__"):
iniciar_jogo()