Mundo em Python

AbraPalavra (estilo Wordle)

from tqdm import tqdm
import time
import random # Lista de palavras possíveis
PALAVRAS_VALIDAS = [
"amor", "vida", "casa", "pato", "gato", "mesa", "bala", "cama", "mato",
"lava", "nato", "sapo", "pena", "pega", "lago", "meta", "vaca", "boca",
"cabo", "bota", "sala", "luta", "coro", "bolo", "fato", "frio", "ouro",
"vela", "vila", "cera", "foca", "lama", "tela", "roda", "ruim", "alto",
"piso", "muro", "voto", "lixo", "rima", "base", "roma", "fada", "vale",
"sono", "face", "cola", "lobo", "vivo", "fera", "jogo", "pote", "lira",
"meia", "neve", "sede", "favo", "reia", "arte", "nevo", "leve", "rico",
"peso", "calo", "vela", "tiro", "soro", "soro", "solo", "fria", "cota",
"bela", "mala", "fita", "copo", "foto", "dado", "ouco", "caco"
] # Função para escolher uma palavra aleatória
def escolher_palavra():
return random.choice(PALAVRAS_VALIDAS) # Função para fornecer feedback ao jogador
def verificar_palavra(palavra_secreta, tentativa):
feedback = [""] * len(palavra_secreta)
letras_usadas_secreta = [False] * len(palavra_secreta) # Marca letras usadas na palavra secreta
letras_usadas_tentativa = [False] * len(tentativa) # Marca letras usadas na tentativa

# Primeiro, marca as letras corretas na posição correta (azul)
for i, letra in enumerate(tentativa):
if letra == palavra_secreta[i]: # Letra correta e posição correta
feedback[i] = f"\033[94m[{letra.upper()}]\033[0m " # Azul
letras_usadas_secreta[i] = True # Marca a letra da palavra secreta como usada
letras_usadas_tentativa[i] = True # Marca a letra da tentativa como usada

# Depois, verifica letras presentes na palavra, mas na posição incorreta (amarelo)
for i, letra in enumerate(tentativa):
if not letras_usadas_tentativa[i]: # Ignora letras já corretamente posicionadas
if letra in palavra_secreta:
# Procurar letra na palavra secreta para verificar posição incorreta
for j, letra_secreta in enumerate(palavra_secreta):
if letra == letra_secreta and not letras_usadas_secreta[j]:
feedback[i] = f"\033[93m({letra})\033[0m " # Amarelo
letras_usadas_secreta[j] = True # Marca a letra da palavra secreta como usada
letras_usadas_tentativa[i] = True # Marca a letra da tentativa como usada
break
else:
# Marcar como vermelho para letras que não estão na palavra
feedback[i] = f"\033[91m{letra}\033[0m " # Vermelho para letras incorretas

return ''.join(feedback) # Função principal do jogo
def jogar_abrapalavra_estilo_wordle():
print("Bem-vindo ao AbraPalavra (estilo Wordle)!")
palavra_secreta = escolher_palavra()
tentativas = 6
print("Dica: A palavra tem", len(palavra_secreta), "letras.")
print("Tente adivinhar a palavra secreta. Você tem 6 tentativas!") for tentativa in range(1, tentativas + 1):
tentativa_palavra = input(f"Tentativa {tentativa}/{tentativas}: ").lower() # Verifica se a palavra tem o tamanho correto
if len(tentativa_palavra) != len(palavra_secreta):
print(f"A palavra deve ter {len(palavra_secreta)} letras.")
continue

# Feedback para o jogador
feedback = verificar_palavra(palavra_secreta, tentativa_palavra)
print("Feedback:", feedback) # Verifica se a palavra foi adivinhada
if tentativa_palavra == palavra_secreta:
print(f"Parabéns! Você adivinhou a palavra '{palavra_secreta}' em {tentativa} tentativas!")
return # Termina o jogo se a palavra foi adivinhada
else:
print(f"Que pena! Você não adivinhou a palavra. A palavra era '{palavra_secreta}'.") # Loop do menu principal
while True:
print("=" * 60)
print("\t\t\t AbraPalavra (estilo Wordle)!")
print("=" * 60)
print("\t\t1 - Jogar\n\t\t2 - Sair")
opcao = input("Digite a opção: ") if opcao == "1":
jogar_abrapalavra_estilo_wordle()
elif opcao == "2":
print("Encerrando o jogo, por favor aguarde...")
for _ in tqdm(range(100), desc="Saindo", ascii=True):
time.sleep(0.05) # Ajusta o tempo para uma barra de progresso rápida
print("Fim do Programa")
break
else:
print("Opção inválida! Tente novamente.")
0