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()