2
respostas

Minha versao do jogo da forca

import random
import unidecode

def jogar():

    mensagem_abertura()

    palavra_secreta = carrega_palavra_secreta()
    letras_corretas = inicializa_letras_corretas(palavra_secreta)

    if "-" in palavra_secreta:
        chute = "-"
        marca_chute_correto(chute, letras_corretas, palavra_secreta)
        qtd_caractere = letras_corretas.count('-')
        print(f"É uma fruta com {len(palavra_secreta)-qtd_caractere} letras \n")
    else:
        print(f"É uma fruta com {len(palavra_secreta)} letras \n")

    print(f"{letras_corretas}\n")

    enforcou = False
    acertou = False
    erros = 0
    letras_errada = []

    while(not enforcou and not acertou):

        chute = pede_chute()

        if (chute in palavra_secreta):
            marca_chute_correto(chute, letras_corretas, palavra_secreta)
        else:
            erros += 1
            letras_errada.append(chute)
            desenha_forca(erros, letras_errada)

        enforcou = erros == 7
        acertou = "_" not in letras_corretas
        print(f"{letras_corretas}\n")

    if (acertou):
        mostra_mensagem_ganhador()
    else:
        mostra_mensagem_perdedor(palavra_secreta)
    print("Fim de Jogo")

def mensagem_abertura():
    print()
    print()
    print("*********************************")
    print("***Bem vindo ao jogo da Forca!***")
    print("*********************************")
    print()

def carrega_palavra_secreta():

    arquivo = open("palavras.txt", "r")
    palavras = []

    for linha in arquivo:
        linha = (linha.strip())
        palavras.append(linha)

    arquivo.close()

    posicao = random.randrange(0, len(palavras))
    palavra_secreta = unidecode.unidecode(palavras[posicao].upper())

    return palavra_secreta

def inicializa_letras_corretas(palavra):

    return ["_" for letra in palavra]

def pede_chute():
    chute = input('Qual letra? ')
    print()
    chute = chute.strip().upper()

    return chute

def marca_chute_correto(chute, letras_corretas, palavra_secreta):
    index = 0
    for letra in palavra_secreta:
        if(chute == letra):
            letras_corretas[index] = letra
        index += 1

def mostra_mensagem_ganhador():
    print("Parabéns, você ganhou!")
    print("       ___________      ")
    print("      '._==_==_=_.'     ")
    print("      .-\\:      /-.    ")
    print("     | (|:.     |) |    ")
    print("      '-|:.     |-'     ")
    print("        \\::.    /      ")
    print("         '::. .'        ")
    print("           ) (          ")
    print("         _.' '._        ")
    print("        '-------'       ")

def mostra_mensagem_perdedor(palavra_secreta):    
    print("Não foi desta vez \n GAME OVER")
    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 desenha_forca(erros, letras_errada):
    print("  _______     ")
    print(" |/      |    ")

    if(erros == 1):
        print(" |      (_)   ")
        print(" |            ")
        print(" |            ")
        print(" |            ")

    if(erros == 2):
        print(" |      (_)   ")
        print(" |      \     ")
        print(" |            ")
        print(" |            ")

REMOVI UM PEDAÇO DO CODIGO AQUI DO MEIO,  APENAS AQUI NO COMENTARIO DA ALURA, 
POR CAUSA DO LIMITE DE CARACTERES

    if(erros == 5):
        print(" |      (_)   ")
        print(" |      \|/   ")
        print(" |       |    ")
        print(" |            ")

    if(erros == 6):
        print(" |      (_)   ")
        print(" |      \|/   ")
        print(" |       |    ")
        print(" |      /     ")

    if (erros == 7):
        print(" |      (_)   ")
        print(" |      \|/   ")
        print(" |       |    ")
        print(" |      / \   ")

    print(" |            ")
    print("_|___         ")
    print()
    print(f"Você já usou as letras {letras_errada}\n")
    print(f"você ainda tem {7-erros} tentativas\n")

if (__name__=="__main__"):
    jogar()
2 respostas

Realizei alguns ajustes no codigo, para tratamento quando as palavras tem acentuação e também caso a palavra tenha um hifem no meio dela

Ficou bem legal, Hygor. Parabéns!