Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Reconhecer palavras com acento

Incluí no meu arquivo algumas palavras com acento e indiquei o encoding("UTF-8") na hora de abrir. Tem alguma forma de fazer com que o jogo preencha as letras com acento quando o usuário chutar a mesma letra sem? A exemplo, na palavra "maçã", se eu chuto a letra "a", ele preenche apenas na posição 1 e para preencher a letra da posição 3 tenho que chutar "ã". Segue o código:

import forca
import random

def jogar():

    imprimir_mensagem_abertura()
    palavra_secreta = carregar_palavra_secreta()
    letras_acertadas = ["_" for letra in palavra_secreta]
    print(letras_acertadas)

    enforcou = False
    acertou = False
    erros = 0

    while(not enforcou and not acertou):
        chute = pedir_chute()

        if(chute in palavra_secreta):
            marcar_chute_correto(chute, letras_acertadas, palavra_secreta)
        else:
            erros += 1
            desenhar_forca(erros)

        enforcou = erros == 7
        acertou = "_" not in letras_acertadas
        print(letras_acertadas)

    if(acertou):
        imprimir_mensagem_vencedor()
    else:
        imprimir_mensagem_perdedor(palavra_secreta)

def imprimir_mensagem_abertura():
    print("***************************")
    print("Bem vindo ao jodo de forca!")
    print("***************************")

def carregar_palavra_secreta():
    with open("palavras.txt", "r", encoding="UTF-8") as arquivo:
        palavras = []

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

    numero = random.randrange(0, len(palavras))
    palavra_secreta = palavras[numero].upper()
    return palavra_secreta

def pedir_chute():
    chute = input("Escolha uma letra: ")
    chute = chute.strip().upper()
    return chute

def marcar_chute_correto(chute, letras_acertadas, palavra_secreta):
    posicao = 0
    for letra in palavra_secreta:
        if (chute == letra):
            letras_acertadas[posicao] = letra
        posicao += 1

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

def imprimir_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 desenhar_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()

if(__name__ == "__main__"):
    jogar()
1 resposta
solução!

Sim, existem várias maneiras de se chegar nesse resultado mas infelizmente nenhuma é mágica, vai ter que dar uma trabalhada na lógica e adicionar umas linhas de código...

Você por exemplo pode criar um dicionárip/lista para cada letra que tenha uma "variação" especial, fazer uma checagem se a letra "chutada" está nessa lista e caso esteja, comparar com a letra sem acento, mas preencher com a letra original chutada, utilizando uma variável auxiliar :D