#include "GameBoy.h"
GameBoy gb;
// Спрайти 8x8 для меню
bool spriteS[8][8] = {
{0,0,0,1,1,0,0,0},
{0,1,0,1,1,1,1,0},
{0,1,1,1,1,1,1,1},
{0,0,0,0,0,0,1,1},
{0,1,1,1,1,1,1,1},
{0,1,1,1,1,1,1,1},
{0,1,1,0,0,0,0,0},
{0,1,1,1,1,1,1,0}
};
bool spriteC[8][8] = {
{0,0,0,0,1,1,1,0},
{0,0,0,1,1,1,1,1},
{0,0,0,1,0,1,0,1},
{0,0,0,0,0,0,0,0},
{0,1,1,1,0,0,0,0},
{1,1,1,1,1,0,0,0},
{1,0,1,0,1,0,0,0},
{0,0,0,0,0,0,0,0}
};
// Виправлена функція для зчитування пікселя з обраного масиву
bool getPixel(int m, int x, int y) {
if (m == 0) return spriteS[y][x];
if (m == 1) return spriteC[y][x];
return 0;
}
enum MODE { SNAKE, CAR, OTHER };
int mode = SNAKE;
void setup() {
Serial.begin(9600);
gb.begin(0);
// Цикл меню
while (true) {
int key = gb.getKey();
// Вихід з меню (вибір гри) - кнопка 3 (вгору)
if (key == 3) break;
// Перемикання режимів
if (key == 4 && mode > 0) { mode--; delay(200); } // Вліво
if (key == 5 && mode < OTHER - 1) { mode++; delay(200); } // Вправо
// Малювання спрайту на екрані
for (int y = 0; y < 8; y++) {
for (int x = 0; x < 8; x++) {
gb.setLed(x, y, getPixel(mode, x, y));
}
}
// Якщо бібліотека потребує оновлення кадру, розкоментуй:
// gb.update();
}
}
void loop() {
// Повернення в меню при натисканні кнопки 1
if (gb.getKey() == 1) {
asm volatile ("jmp 0");
}
// Тут логіка гри залежно від mode
Serial.print("Граємо в режим: ");
Serial.println(mode);
delay(500);
}