# Librerias
from machine import I2C, Pin
import pico_i2c_lcd
import lcd_api
import utime
import urandom
# Configura el bus I2C
# Reemplaza 2 y 3 con los pines de SDA y SCL
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
# Definir Pines (Pulsadores de los comandos)
tiro = Pin(27,Pin.OUT)
der = Pin(12,Pin.OUT)
izq = Pin(14,Pin.OUT)
nume = 0
# La dirección I2C del LCD puede variar, este es un valor común.
lcd_address = 0x27
pac_abierto = [
0b01110,
0b10001,
0b10000,
0b10001,
0b01110,
0b00000,
0b00000,
0b00000]
pac_cerrado = [
0b01110,
0b10001,
0b10001,
0b10001,
0b10001,
0b01110,
0b00000,
0b00000]
lcd = pico_i2c_lcd.I2cLcd(i2c, lcd_address, 2, 16) # Asume un LCD de 2x16
lcd.custom_char(0, pac_abierto)
lcd.custom_char(1, pac_cerrado)
# Limpia el LCD
#lcd.clear()
# Muestrar la galleta y el numeral (#)
Mover = 5
lcd.move_to(Mover, 0)
lcd.putstr("O")
lcd.clear()
nume = 6
lcd.move_to(nume, 1)
lcd.putstr("#")
# Tiempo en el que inicia el juego
tiempo_inicial=utime.ticks_ms()
# Ciclo para jugar
while True:
# Tiempo que va contando mientras juega
tiempo_actual=utime.ticks_ms()
# Imprimir en la pantalla el numero
lcd.move_to(nume, 1)
lcd.putstr("#")
Cambio = urandom.randint(-1,1)
utime.sleep(0.2) # Espera 2 segundos
if Mover == 0:
Cambio = 1
if Mover == 15:
Cambio = -1
Mover = Mover + Cambio
lcd.move_to(Mover,0)
lcd.putstr("O")
utime.sleep(0.2) # Espera 2 segundos
lcd.clear()
if der.value() == 0:
nume = nume + 1
if izq.value() == 0:
nume = nume - 1
lcd.move_to(nume, 1)
utime.sleep(0.1)
if tiro.value() == 1:
if Mover == nume:
lcd.clear()
lcd.putstr("¡¡¡GANASTE!!!")
else:
lcd.clear()
lcd.putstr("¡¡¡PERDISTE!!!")
if tiempo_actual - tiempo_inicial >= 15000:
lcd.clear()
lcd.putstr("¡¡¡TIEMPO!!!")
break
continue