from machine import Pin # Importa la clase 'Pin' para trabajar con pines GPIO
import time # Importa la biblioteca 'time' para manejar el tiempo
import random # Importa la biblioteca 'random' para generar números aleatorios
# Configura las variables con los pines GPIO utilizados y otras configuraciones del juego
pin_led1 = 14 # Pin GPIO para el primer LED de la secuencia
pin_led2 = 32 # Pin GPIO para el segundo LED de la secuencia
pin_led3 = 15 # Pin GPIO para el tercer LED de la secuencia
pin_led4 = 13 # Pin GPIO para el cuarto LED de la secuencia
pin_inicio = 33 # Pin GPIO para el botón de inicio
pin_exito = 25 # Pin GPIO para el LED de éxito
pin_fracaso = 26 # Pin GPIO para el LED de fracaso
longitud_secuencia = 4 # Longitud de la secuencia (4 LEDs)
pines_pulsador = [18, 19, 23, 5] # Pines GPIO para los pulsadores
# Inicializa los pines GPIO con sus respectivas configuraciones
led1 = Pin(pin_led1, Pin.OUT)
led2 = Pin(pin_led2, Pin.OUT)
led3 = Pin(pin_led3, Pin.OUT)
led4 = Pin(pin_led4, Pin.OUT)
boton_inicio = Pin(pin_inicio, Pin.IN, Pin.PULL_UP)
led_exito = Pin(pin_exito, Pin.OUT)
led_fracaso = Pin(pin_fracaso, Pin.OUT)
# Define una función para generar una secuencia aleatoria de LEDs
def generar_secuencia_aleatoria(longitud):
secuencia = [random.choice([led1, led2, led3, led4]) for _ in range(longitud)]
return secuencia
# Define una función para mostrar una secuencia en los LEDs
def mostrar_secuencia(secuencia):
for led in secuencia:
led.on() # Enciende el LED correspondiente
time.sleep(1) # Espera 1 segundo
led.off() # Apaga el LED
time.sleep(1) # Espera 1 segundo
# Define una función para obtener la secuencia del usuario
def obtener_secuencia_usuario(longitud):
secuencia_usuario = []
while len(secuencia_usuario) < longitud:
for i, pin in enumerate(pines_pulsador):
if Pin(pin, Pin.IN, Pin.PULL_UP).value() == 0:
# Asocia el pulsador al LED en función del orden de encendido
if i == 0:
secuencia_usuario.append(led1)
elif i == 1:
secuencia_usuario.append(led2)
elif i == 2:
secuencia_usuario.append(led3)
elif i == 3:
secuencia_usuario.append(led4)
time.sleep(1) # Espera 1 segundo entre pulsaciones
return secuencia_usuario
# Función principal del juego
def main():
try:
while True:
# Espera al inicio del juego (botón de inicio presionado)
while boton_inicio.value() == 1:
pass
# Genera una secuencia aleatoria
secuencia = generar_secuencia_aleatoria(longitud_secuencia)
# Muestra la secuencia al usuario
mostrar_secuencia(secuencia)
# El usuario ingresa su secuencia
secuencia_usuario = obtener_secuencia_usuario(longitud_secuencia)
# Imprime el orden real y el orden del jugador
print("Orden Real:", [led.pin() for led in secuencia])
print("Tu Orden :", [led.pin() for led in secuencia_usuario])
# Compara la secuencia del usuario con la secuencia generada
if secuencia_usuario == secuencia:
led_exito.on()
print("Ganaste")
else:
led_fracaso.on()
print("Has perdido, pulsa el botón Inicio para un nuevo intento")
# Espera un momento antes de reiniciar el juego
time.sleep(2) # Espera 2 segundos
led_exito.off() # Apaga el LED de éxito
led_fracaso.off() # Apaga el LED de fracaso
except KeyboardInterrupt:
for led in [led1, led2, led3, led4]:
led.off() # Apaga todos los LEDs en caso de interrupción del usuario
if _name_ == "_main_":
main() # Llama a la función principal si el script se ejecuta como programa principal