2
respostas

Tentando um Termoo

Pessoal, com os conhecimento até aqui, tentei avançar para fazer aquele joguinho que fez sucesso há um tempo atrás, o Termoo.

Consiste em basicamente adivinhar uma palavra de 5 letras, mas você tem que chutar a palavra completa e ele retorna: 1- Letras que estão na posição correta 2- Letras que tem na palavra mas não estão na posição correta 3- Em branco espaços que não estão na palavra.

Fiz 3 variáveis para as palavras: palavra_secreta: que vem de uma lista txt que fiz. palavra_escolhida: que o jogador digitou palavra_verificada: que é a lista que informa a cada rodada as letras se estão no local correto.

No código, para letras que estão na palavra, mas estão no local errado eu coloquei um * junto com a letra, mas agora estou com dificuldade de conferir se a pessoa acertou.

Eu fiz um tratamento para que não poudesse ter palavras diferentes de 5 letras e nem que não estivesse na lista:

def aceita_palavra(palavra_escolhida,lista_palavras):
    if len(palavra_escolhida.strip()) != 5:
        print("Palavra com 5 letras")
        return False
    elif lista_palavras.count(palavra_escolhida) == 0:
        print(palavra_escolhida)
        print("Palavra inválida")
        return False
    else:
        return True

Mas gostaria de saber como fazer esse tratamento para acentos e para números. O que teria que estudar para conseguir resolver esse problema?

Grato.

Segue o código completo:

import random

def jogo_principal():

    boas_vindas()

    palavra_secreta, lista_palavras = escolhe_palavra()
    total_tentativas = 0
    acertou = False

    while not total_tentativas == 8 and not acertou:
        palavra_escolhida = input("Digite uma palavra até 5 letras:").strip().upper()
        palavra_verificada = ["_" for letra in palavra_secreta]

        if aceita_palavra(palavra_escolhida, lista_palavras):
            analisa_palavra_escolhida(palavra_escolhida, palavra_secreta, palavra_verificada)
        else:
            continue

        acertou = verifica(palavra_verificada)
        if acertou:
            certo()

        total_tentativas += 1
        print("tentativa {} de {}".format(total_tentativas,8))
    if acertou:
        certo()
    else:
        errado()
        print("A palavra era {}:".format(palavra_secreta))


# Mensagem simples de boas vindas.
def boas_vindas():
    print("*********************************")
    print("*****Bem-vindo(a) ao Termooo*****")
    print("*********************************")


# Transforma arquivo de texto de palavras de 5 letras em lista.
def escolhe_palavra():
    arquivo = open("palavras5letras.txt", "r")
    lista_palavras = []

    for linha in arquivo:
        linha = linha.strip().upper()
        lista_palavras.append(linha)

    arquivo.close()

    palavra_secreta = lista_palavras[random.randrange(0, len(lista_palavras))].upper()

    return palavra_secreta, lista_palavras

#Analisa requisitos para a palvra
def aceita_palavra(palavra_escolhida,lista_palavras):
    if len(palavra_escolhida.strip()) != 5:
        print("Palavra com 5 letras")
        return False
    elif lista_palavras.count(palavra_escolhida) == 0:
        print(palavra_escolhida)
        print("Palavra inválida")
        return False
    else:
        return True


#Analisa a palavra escolhida
def analisa_palavra_escolhida(palavra_escolhida, palavra_secreta, palavra_verificada):
    index = 0


    for letra in palavra_escolhida:

        if palavra_escolhida[index] == palavra_secreta[index]:
            palavra_verificada[index] = palavra_secreta[index]
        elif palavra_secreta.count(palavra_escolhida[index]):
            palavra_verificada[index] = palavra_escolhida[index] + "*"

        index += 1

    print(palavra_verificada)

def verifica(palavra_verificada):
    index = 0
    letras_corretas = 0
    for index in range(0, len(palavra_verificada)):
        if palavra_verificada[index] != "_" and palavra_verificada[index].count("*") == 0:
            letras_corretas += 1

        if letras_corretas == len(palavra_verificada):
            return True

def certo():
    print("*********************************")
    print("********PALAVRA CORRETA**********")
    print("*********************************")

def errado():
    print("*********************************")
    print("********PALAVRA ERRADA**********")
    print("*********************************")


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

Bom dia Bruno! Tudo bem por ai?

def aceita_palavra(palavra_escolhida,lista_palavras):
    if len(palavra_escolhida.strip()) != 5:
        print("Palavra com 5 letras")
        return False
    elif lista_palavras.count(palavra_escolhida) == 0:
        print(palavra_escolhida)    **<<<<<< Acho que a unica coisa que falta em seu codigo seria as "" ali para o print!**
        print("Palavra inválida")
        return False
    else:
        return True

Po Alexsey. Na verdade não precisa das aspas, porque palavras_escolhida é uma variável.

Minha dúvida é na primeira parte. De como ao invés de colocar apenas pelo tamanho de 5 letras, colocar para checar se tem acentos na palavra.