# 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