import machine
import utime
import urandom # Import the urandom module for random number generation
from machine import Pin, I2C
from lcd_api import LcdApi
from pico_i2c_lcd import I2cLcd
# Initialize I2C
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
# Initialize LCD
lcd = I2cLcd(i2c, 0x27, 4, 20)
# Initialize buttons
button1 = Pin(18, Pin.IN, Pin.PULL_DOWN)
button2 = Pin(19, Pin.IN, Pin.PULL_DOWN)
button3 = Pin(20, Pin.IN, Pin.PULL_DOWN)
button4 = Pin(21, Pin.IN, Pin.PULL_DOWN)
# Generate a random target number between 1 and 4
target_number = urandom.randint(1, 4)
# Initialize player's guess
player_guess = None
# Game loop
while True:
# print(target_number) # to debug
# Display game instructions
lcd.move_to(0, 0)
lcd.putstr("Guess the Button!")
# Get player input
if button1.value() == 1:
player_guess = 1
elif button2.value() == 1:
player_guess = 2
elif button3.value() == 1:
player_guess = 3
elif button4.value() == 1:
player_guess = 4
# Check player's guess
if player_guess is not None:
lcd.clear()
if player_guess == target_number:
lcd.putstr("Congratulations!\nYou guessed it!")
else:
lcd.putstr("Wrong guess.\nTry again! \nCorrect answer is: " + str(target_number))
# Reset player's guess
player_guess = None
# Generate a new random target number
target_number = urandom.randint(1, 4)
# Wait for a moment before clearing the LCD
utime.sleep(2)
lcd.clear()