from machine import Pin
from utime import sleep_ms, ticks_ms
import random
quantidade_levels = 10
dificuldade = 1 # dificuldade determina a velocidade dos leds (1 é o normal)
led1 = Pin(1, Pin.OUT)
led2 = Pin(2, Pin.OUT)
led3 = Pin(3, Pin.OUT)
led4 = Pin(4, Pin.OUT)
button1 = Pin(21, Pin.IN)
button2 = Pin(22, Pin.IN)
button3 = Pin(26, Pin.IN)
button4 = Pin(27, Pin.IN)
leds = [led1, led2, led3, led4]
botoes = [button1, button2, button3, button4]
def esperar_inicio():
print("🎮 Clique e solte o botão vermelho para começar! 🎮")
while True:
sleep_ms(5)
if button1.value() == 1:
while True:
sleep_ms(5)
if button1.value() == 0:
print("🚩 Iniciando jogo! 🚩\n")
for i in range(6):
for led in leds:
led.toggle()
sleep_ms(500)
break
break
def randomizar_ordem():
escolhas = []
for i in range(quantidade_levels):
escolhas.append(random.choice([0, 1, 2, 3]))
sleep_ms(2)
return escolhas
def adicionar_level(level):
global escolhas
leds_level = []
for i in range(1, level + 1):
leds_level.append(escolhas[i - 1])
return leds_level
def mandar_derrota(leds_level, botao, botao_certo):
emojis = ""
emojis_leds = ["🔴", "🟢", "🔵", "🟡"]
emoji_certo = emojis_leds[botoes.index(botao_certo)]
emoji_errado = emojis_leds[botoes.index(botao)]
for i in leds_level:
emojis += f"{emojis_leds[i]} "
print("\033[1;91m🛑 Você errou!\033[0m")
print(f"\033[1;33m📑 O certo era{emoji_certo} , mas você clicou {emoji_errado}\033[0m")
print(f"\033[1;33m📜 A ordem deste level era: {emojis}\033[0m")
def verificar_clique(leds_level):
for i in leds_level:
botao_certo = botoes[i]
while True:
sleep_ms(5)
for botao in botoes:
sleep_ms(5)
if botao.value() == 1 and botao != botao_certo:
mandar_derrota(leds_level, botao, botao_certo)
return False
if botao.value() == 1 and botao == botao_certo:
while botao.value() == 1:
sleep_ms(5)
break
else:
continue
break
return True
esperar_inicio()
random.seed(ticks_ms())
escolhas = randomizar_ordem()
for level in range(1, quantidade_levels+1):
print(f"\n🏁 Level {level}!")
leds_level = adicionar_level(level)
for i in leds_level:
leds[i].value(1)
sleep_ms(500 - (level * (dificuldade*22)))
leds[i].value(0)
sleep_ms(500 - (level * (dificuldade*18)))
if not verificar_clique(leds_level):
sleep_ms(100000)
break
if level == quantidade_levels:
print(f"\033[1;92m🎉 PARABÉNS!! Você finalizou o jogo 🎊\033[0m")
sleep_ms(100000)
break