from machine import Pin, I2C
import utime
import ssd1306
import framebuf
# 1. Ορίζουμε τον δίαυλο I2C στα GP0 (SDA) και GP1 (SCL)
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
# 2. Αρχικοποιούμε την οθόνη SSD1306 (128x64 pixels)
display = ssd1306.SSD1306_I2C(128, 64, i2c)
# --- BUTTONS SETUP ---
btn_next = Pin(2, Pin.IN, Pin.PULL_UP)
btn_action = Pin(3, Pin.IN, Pin.PULL_UP)
btn_back = Pin(4, Pin.IN, Pin.PULL_UP)
# --- GAME STATE ---
selected_icon = 0 # 0: Hunger, 1: Game
last_button_time = 0 # Για το debounce
debounce_delay = 200 # ms καθυστέρηση για αποφυγή διπλού πατήματος
#Suiii
pet_data = bytearray([
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x7f, 0xff, 0xff,
0x3f, 0xff, 0xfe, 0x06, 0x60, 0x7f, 0xff, 0xfc, 0x0f, 0xff, 0xff, 0x06, 0x60, 0xff, 0xff, 0xf0,
0x07, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0xe0, 0x03, 0xff, 0xff, 0x87, 0xe1, 0xff, 0xff, 0xc0,
0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00,
0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00,
0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00,
0x00, 0x7e, 0x3f, 0xff, 0xff, 0xfc, 0x7e, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
])
pet_data_r = bytearray([
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xfe, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0x06, 0x40, 0x7e, 0x00, 0x00,
0x01, 0xff, 0xff, 0x07, 0xc0, 0x7f, 0xf8, 0x00, 0x00, 0xff, 0xff, 0x8f, 0xc0, 0xff, 0xff, 0xf0,
0x00, 0xff, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xfc,
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80,
0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00,
0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xfc, 0x00,
0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xf8, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfc, 0x03, 0xf8, 0x00,
0x00, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x08, 0x00,
0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
])
pet_data_rr = bytearray([
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf8,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc0,
0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x00,
0x00, 0x00, 0x00, 0x01, 0x03, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x70, 0x11, 0x03, 0xff, 0xfe, 0x00,
0x00, 0x1f, 0xf0, 0x1b, 0x07, 0xff, 0xfc, 0x00, 0x0f, 0xff, 0xf8, 0x1f, 0x8f, 0xff, 0xfc, 0x00,
0xff, 0xff, 0xfc, 0x1f, 0x9f, 0xff, 0xfc, 0x00, 0xff, 0xff, 0xfe, 0x1f, 0xff, 0xff, 0xfc, 0x00,
0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00,
0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00,
0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00,
0x00, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe7, 0xff, 0xf8, 0x00, 0x00, 0x00,
0x00, 0xf8, 0x00, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
])
pet_sprite = framebuf.FrameBuffer(pet_data, 64, 64, framebuf.MONO_HLSB)
pet_sprite_r = framebuf.FrameBuffer(pet_data_r, 64, 64, framebuf.MONO_HLSB)
pet_sprite_rr = framebuf.FrameBuffer(pet_data_rr, 64, 64, framebuf.MONO_HLSB)
frames = [pet_sprite, pet_sprite_r, pet_sprite, pet_sprite_rr]
hungry_f = bytearray([
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0xe0,
0x00, 0x00, 0x79, 0xe0, 0x00, 0x00, 0x7b, 0xe0, 0x00, 0x00, 0xf3, 0xc0, 0x00, 0x0f, 0xe7, 0x80,
0x00, 0xff, 0xff, 0x00, 0x01, 0xff, 0xfe, 0x00, 0x03, 0xfc, 0xfe, 0x00, 0x07, 0xc0, 0x3d, 0x80,
0x07, 0x80, 0x3b, 0x80, 0x07, 0x00, 0x03, 0x80, 0x07, 0x00, 0x03, 0x80, 0x1f, 0xff, 0xff, 0xe0,
0x1f, 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xff, 0xc0, 0x0f, 0xff, 0xff, 0xc0,
0x0f, 0xfc, 0xff, 0xc0, 0x07, 0xff, 0xff, 0x80, 0x07, 0xff, 0xff, 0x80, 0x03, 0xff, 0xff, 0x00,
0x00, 0xff, 0xfc, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
])
hungry_checked_f = bytearray([0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xe7, 0xfc, 0xff, 0xff, 0xe7, 0x9c,
0xff, 0xff, 0xcf, 0x1c, 0xff, 0xff, 0xce, 0x3c, 0xff, 0xff, 0x9c, 0x7c, 0xff, 0xf8, 0x1c, 0xfc,
0xff, 0x80, 0x01, 0xfc, 0xff, 0x03, 0x01, 0xfc, 0xfe, 0x3f, 0xe3, 0xfc, 0xfc, 0x7f, 0xc6, 0xfc,
0xf8, 0xff, 0xce, 0x7c, 0xf9, 0xff, 0xfe, 0x7c, 0xf9, 0xff, 0xfe, 0x7c, 0xe0, 0x00, 0x00, 0x1c,
0xe0, 0x00, 0x00, 0x1c, 0xf0, 0x00, 0x00, 0x3c, 0xf0, 0x60, 0x18, 0x3c, 0xf0, 0x60, 0x18, 0x3c,
0xf8, 0x07, 0x80, 0x7c, 0xf8, 0x03, 0x00, 0x7c, 0xfc, 0x00, 0x00, 0xfc, 0xfe, 0x00, 0x01, 0xfc,
0xff, 0x80, 0x07, 0xfc, 0xff, 0x80, 0x07, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc,
0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc])
frame_hunger_ar = [framebuf.FrameBuffer(hungry_f, 30, 30, framebuf.MONO_HLSB), framebuf.FrameBuffer(hungry_checked_f, 30, 30, framebuf.MONO_HLSB)]
game_f = bytearray([
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x00, 0x1f, 0xff, 0xff, 0xe0,
0x1f, 0xff, 0xff, 0xe0, 0x3f, 0xff, 0xff, 0xf0, 0x3f, 0xff, 0xff, 0xf0, 0x3f, 0xff, 0xff, 0xf0,
0x3f, 0xff, 0xff, 0xf0, 0x3e, 0x7f, 0xff, 0xf0, 0x3c, 0x3f, 0xff, 0xf0, 0x7c, 0x3f, 0xff, 0xf8,
0x7e, 0x7f, 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xf8,
0x7f, 0xff, 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xf8, 0x7f, 0xc0, 0x0f, 0xf8, 0x7f, 0x80, 0x07, 0xf8,
0x3f, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
])
game_checked_f = bytearray([0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc,
0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x80, 0x07, 0xfc, 0xf0, 0x00, 0x00, 0x3c,
0xe0, 0x00, 0x00, 0x1c, 0xe0, 0x00, 0x00, 0x1c, 0xe0, 0x00, 0x00, 0x1c, 0xe0, 0x00, 0x00, 0x1c,
0xc1, 0x80, 0x06, 0x0c, 0xc1, 0x80, 0x06, 0x0c, 0xc7, 0xe0, 0x19, 0x8c, 0xc7, 0xe0, 0x19, 0x8c,
0xc1, 0x80, 0x06, 0x0c, 0xc1, 0x80, 0x06, 0x0c, 0x80, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x04,
0x80, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x04, 0x80, 0x7f, 0xf8, 0x04, 0xc0, 0xff, 0xfc, 0x0c,
0xe1, 0xff, 0xfe, 0x1c, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc,
0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfc])
frame_game_ar = [framebuf.FrameBuffer(game_f, 30, 30, framebuf.MONO_HLSB), framebuf.FrameBuffer(game_checked_f, 30, 30, framebuf.MONO_HLSB)]
"""
pet_data = bytearray([
0x00, 0x7e, 0x42, 0x7e # <-- Εδώ κάνεις paste τα bytes από το image2cpp
])
pet_data = bytearray([
0x00, 0x7e, 0x42, 0x7e # <-- Εδώ κάνεις paste τα bytes από το image2cpp
])
"""
def selected(selected_icon):
icon_ar[selected_icon] = (icon_ar[selected_icon] + 1) % 2
#print(icon_ar[selected_icon])
return selected_icon
selected_icon = 0 # 0: Null, 1: Hunger, 2:Game
last_button_time = 0 # Χρονόμετρο για το debounce
DEBOUNCE_MS = 180
current_frame = 0
#Null, Hunger, Game
icon_ar = [0, 0, 0]
active_select = 0
while True:
active_select = active_select if active_select == 0 else selected(selected_icon)
current_time = utime.ticks_ms()
# --- ΑΝΑΓΝΩΣΗ ΚΟΥΜΠΙΩΝ ---
# Ελέγχουμε αν πέρασε ο χρόνος debounce από το τελευταίο πάτημα
if utime.ticks_diff(current_time, last_button_time) > DEBOUNCE_MS:
# NEXT BUTTON (GP2): Κινεί τον cursor κυκλικά (0 -> 1 -> 0)
if btn_next.value() == 0:
icon_ar[:] = [0] * len(icon_ar)
selected_icon = (selected_icon + 1) % 3
active_select = selected(selected_icon)
last_button_time = current_time
print(f"Cursor moved to Icon: {selected_icon}")
# ACTION BUTTON (GP3): Εκτελεί την ενέργεια του επιλεγμένου icon
elif btn_action.value() == 0:
if selected_icon == 0:
print("ACTION: Nothing happens...")
elif selected_icon == 1:
print("ACTION: Feeding the pet!")
icon_ar[active_select] = 0
elif selected_icon == 2:
print("ACTION: Starting Minigame!")
icon_ar[active_select] = 0
last_button_time = current_time
active_select = 0
selected_icon = 0
# BACK BUTTON (GP4): Ακύρωση / Reset
elif btn_back.value() == 0:
print("ACTION: Back pressed")
selected_icon = 0
icon_ar[:] = [0] * len(icon_ar)
last_button_time = current_time
# 1. Καθαρίζουμε την οθόνη
display.fill(0)
display.blit(frame_hunger_ar[icon_ar[1]], 0, 0)
display.blit(frame_game_ar[icon_ar[2]], 98, 0)
# 2. Ζωγραφίζουμε το τρέχον frame της λίστας
display.blit(frames[current_frame], 32, 0)
# 3. Στέλνουμε το αποτέλεσμα στην οθόνη
display.show()
# 4. Εναλλαγή δείκτη: αν είναι 0 γίνεται 1, αν είναι 1 γίνεται 0
current_frame = (current_frame + 1) % len(frames)
# 5. Ρυθμός ανανέωσης (π.χ. 300ms = ~3 FPS για χαλαρό "idle" animation)
utime.sleep_ms(30)