Implementei com algumas diferenças em relação ao código exibido em aula. Tentei "ir um pouco além" e implementar algumas funcionalidades extras, tais como um validador da letra digitada pelo usuário (não aceitando "vazios" e espaços e considerando apenas a primeira letra caso o usuário digite duas ou mais), uma listagem das letras já digitadas pelo usuário - certas ou erradas - é exibida a cada rodada, também não permitindo que o usuário digite uma letra repetidamente. Além disso, ao acertar uma letra o jogo indica para o usuário a posição em que aquela letra encontra-se na palavra. Por fim, usei um sistema de "tentativas" diferente: uma variável "tentativas" começa com um determinado valor (dependente do tamanho da palavra secreta) e é decrementado a cada rodada, independente de acertar ou não alguma letra. Caso o número de tentativas chegue a zero e a palavra secreta não tenha sido descoberta, o jogador perde. Do contrário, ele vence.
`
import random
def jogar():
palavra_secreta = carrega_palavra_secreta()
letras_acertadas = inicializa_letras_acertadas(palavra_secreta)
letras_tentadas = []
letras_faltando=len(palavra_secreta)
total_tentativas = len(palavra_secreta) + 5
enforcou = False
acertou = False
imprime_mensagem_abertura()
print(letras_acertadas)
while(not enforcou and not acertou):
chute = pede_chute(letras_tentadas)
faz_iteracao(palavra_secreta, chute, letras_acertadas)
letras_faltando = str(letras_acertadas.count('_'))
total_tentativas-=1
imprime_mensagem_rodada(letras_faltando, total_tentativas, letras_tentadas, letras_acertadas)
if(total_tentativas==0):
enforcou=True
if ("_" not in letras_acertadas):
enforcou=False
acertou = True
imprime_mensagem_finalizacao(palavra_secreta, acertou, enforcou)
def imprime_mensagem_abertura(): print("*") print("Bem vindo ao jogo da Forca!") print("*") print("Início do jogo")
def carrega_palavra_secreta(nome_arquivo="Lista-de-Palavras.txt", primeira_linha=0): lista_palavras = [] # random.choice(arquivo) with open(nome_arquivo) as arquivo: for linha in arquivo: linha = linha.strip().upper() lista_palavras.append(linha)
palavra_secreta = lista_palavras[random.randrange(primeira_linha, len(lista_palavras))]
return palavra_secreta
def inicializa_letras_acertadas(palavra): lista = ["_" for letra in palavra] return lista
def pede_chute(letras_tentadas): while(True): chute = input("Qual letra? ") if (not chute): print("Digite uma letra!") continue chute = chute[0] while (chute[0] == " "): print("Digite uma letra!") chute = input("Qual letra? ")[0] chute = chute.strip() chute = chute.upper() if (chute in letras_tentadas): print("Letra já tentada!") continue letras_tentadas.append(chute) return chute