#include "GameBoy.h"
GameBoy gb;
int xFood = 3, yFood = 3;
int x = 5, y = 5;
int lenTail = 0;
int xTail[8 * 16];
int yTail[8 * 16];
int xSpeed = 0;
int ySpeed = -1;
void setup() {
gb.begin(0);
Serial.begin(9600);
lenTail = 0;
}
void loop() {
// програш, якщо елемент хвостика перетинає голову
for(int i=lenTail-1; i>0; i--){
if(x==xTail[i] and y==yTail[i]){
delay(1000);
asm volatile ("jmp 0");//програмно стрибнути на 0 рядок
}
}
// === рух хвоста ===
for (int i = lenTail; i > 0; i--) {
xTail[i] = xTail[i - 1];
yTail[i] = yTail[i - 1];
}
if (lenTail > 0) {
xTail[0] = x;
yTail[0] = y;
}
// === рух голови ===
x += xSpeed;
y += ySpeed;
if (x < 0) x = 7;
if (x > 7) x = 0;
if (y < 0) y = 15;
if (y > 15) y = 0;
// === їжа ===
if (x == xFood && y == yFood) {
lenTail++;
xFood = random(8);
yFood = random(16);
}
// === малювання ===
gb.clearDisplay();
for (int i = 0; i < lenTail; i++) {
gb.setLed(xTail[i], yTail[i], true);
}
gb.setLed(xFood, yFood, true);
gb.setLed(x, y, true);
// === керування ===
int key = gb.getKey();
if (key == 5) { xSpeed = 1; ySpeed = 0; }
if (key == 4) { xSpeed = -1; ySpeed = 0; }
if (key == 6) { ySpeed = 1; xSpeed = 0; }
if (key == 3) { ySpeed = -1; xSpeed = 0; }
delay(120);
}