Estou querendo aprimorar o código do jogo da Forca.
Quero informar ao jogador, que quando faltar apenas 3 letras (ou menos) para completar a palavra secreta, ele terá que acertar a palavra completa e não mais, chutar cada letra.
Já pensei em várias tentativas, porém nenhuma deu certo.
import random
def jogar():
mensagem_inicial()
categoria = escolha_categoria()
palavra_secreta = palavra_secreta_categorias(categoria)
letras_acertadas = iniciar_letras_acertadas(palavra_secreta)
print(f'A palavra secreta é {letras_acertadas}')
enforcou = False
acertou = False
erros = 0
#enquanto não enforcou e não acertou
while(not enforcou and not acertou):
chute = chute_jogador()
if(chute in palavra_secreta):
marcação_chute_correto(palavra_secreta, chute, letras_acertadas)
else:
desenha_forca(erros)
erros += 1
enforcou = erros == 8
acertou = '_' not in letras_acertadas
print(letras_acertadas)
if(acertou):
mensagem_ganhador()
else:
mensagem_perdedor(palavra_secreta)
########################################################
#funções
def mensagem_inicial():
print('-' * 26)
print('Bem vindo ao jogo da forca')
print('-' * 26)
print('===== Categorias =====')
print('Frutas')
print('Animes')
print('Objetos')
def escolha_categoria():
categoria = str(input('Escolha um tema para jogar: ')).lower()
return categoria
def palavra_secreta_categorias(categoria):
if categoria == 'frutas':
arquivo = open('palavras2.txt', 'r')
palavras = []
for linha in arquivo:
linha = linha.strip()
palavras.append(linha)
arquivo.close()
numero = random.randrange(0, len(palavras))
palavra_secreta = palavras[numero].upper()
return palavra_secreta
elif categoria == 'objetos':
arquivo = open('objetos.txt', 'r')
palavras = []
for linha in arquivo:
linha = linha.strip()
palavras.append(linha)
arquivo.close()
numero = random.randrange(0, len(palavras))
palavra_secreta = palavras[numero].upper()
return palavra_secreta
def iniciar_letras_acertadas(palavra):
return ["_" for letra in palavra]
def chute_jogador():
chute = str(input('Escolha alguma letra: ')).upper().strip()
return chute
def marcação_chute_correto(palavra_secreta, chute, letras_acertadas):
index = 0
for letra in palavra_secreta:
if (chute == letra):
letras_acertadas[index] = letra
index += 1
def mensagem_ganhador():
print("Parabéns, você ganhou!")
def mensagem_perdedor(palavra_secreta):
print("Puxa, você foi enforcado!")
print(f"A palavra era {palavra_secreta}")