import fala
from machine import Pin, I2C
from ssd1306 import SSD1306_I2C
from time import sleep
# --- Configurações OLED ---
i2c = I2C(1, scl=Pin(27), sda=Pin(26))
oled = SSD1306_I2C(128, 64, i2c)
tentativas_max = 6
# --- Funções de exibição ---
def mostrar_todas_palavras():
oled.fill(0)
for idx, letras in enumerate(palavras_reveladas):
linha = "".join(letras)
oled.text(linha, 0, idx*10)
# Mostra contador de tentativas na última linha
oled.text(f"Tentativa: {tentativas}/{tentativas_max}", 0, 60)
oled.show()
def revelar_todas_palavras():
for idx, p in enumerate(fala.palavras):
palavras_reveladas[idx] = list(p.upper())
mostrar_todas_palavras()
def introducao():
oled.fill(0)
for idx, linha in enumerate(fala.introducao):
oled.text(linha, 0, idx*10)
oled.show()
sleep(5)
# --- Tela de introdução ---
introducao()
# --- Inicializa palavras com todas as letras escondidas ---
palavras_reveladas = []
for p in fala.palavras:
letras = ["_" for _ in range(len(p))]
palavras_reveladas.append(list(letras))
tentativas = 0 # contador de tentativas
# --- Loop principal estilo TERMO ---
while tentativas < tentativas_max:
mostrar_todas_palavras()
tentativa = input("Digite uma palavra: ").upper()
# Verifica tamanho
if len(tentativa) != len(fala.palavras[0]):
print(f"Palavra deve ter {len(fala.palavras[0])} letras!")
continue
# Atualiza letras reveladas para cada palavra
for idx, palavra in enumerate(fala.palavras):
palavra = palavra.upper()
for i, l in enumerate(palavra):
if tentativa[i] == l:
palavras_reveladas[idx][i] = l
tentativas += 1 # cada tentativa de palavra conta
# Verifica se todas as palavras foram descobertas
todas_descobertas = all("".join(palavras_reveladas[i]) == fala.palavras[i].upper() for i in range(len(fala.palavras)))
if todas_descobertas:
mostrar_todas_palavras()
print(f"Parabéns! Você descobriu todas as palavras em {tentativas} tentativas!")
break
else:
print("Fim das tentativas! Aqui estão as palavras corretas:")
revelar_todas_palavras()