ZX#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
// константа - незмінний
const int btnLeft = 3;
const int btnRight = 2;
int basketY = random(0, 2);
int eggX = 15;
int eggY = random(0, 2);
int score = 0;
byte eggChar[8] = {
B00100,
B01110,
B11111,
B11111,
B11111,
B01110,
B00100,
B00000
};
byte basketChar[8] = {
B11111,
B10001,
B10001,
B10001,
B11111,
B01110,
B00100,
B00000
};
int skeletonX = 20;
int skeletonY = 0;
byte skeletonChar[8] = {
B00000,
B01110,
B11111,
B10101,
B11011,
B01110,
B01010,
B01110
};
void setup() {
// lcd.init();
lcd.begin(); // begin на СенсоКоті
lcd.backlight();
lcd.createChar(0, eggChar);
lcd.createChar(1, basketChar);
lcd.createChar(2, skeletonChar);
pinMode(btnLeft, INPUT);
pinMode(btnRight, INPUT);
}
void loop() {
delay(50); // Швидкість падіння // FPS 20
// Рух кошика
if (digitalRead(btnLeft)) basketY=0;
if (digitalRead(btnRight)) basketY=1;
// Малюємо все
lcd.clear();
lcd.setCursor(skeletonX, skeletonY);
lcd.write(byte(2));
lcd.setCursor(0, basketY);
lcd.write(byte(1)); // Кошик
lcd.setCursor(eggX, eggY);
lcd.write(byte(0));
eggX--;
skeletonX --;
lcd.setCursor(12, 0);
lcd.print("Eggs");
lcd.setCursor(12, 1);
lcd.print(score);
if(skeletonX ==0){
if(skeletonY==basketY){
lcd.setCursor(0, 0);
lcd.print("RIP vsuo gameOver");
delay(5000);
asm volatile ("jmp 0x0000");//чорна магія для рестарту
}
skeletonY = random(0, 2);
skeletonX = random(20, 35);
}
// tone(ніжкаПєзи, частота, тривалість);
// перевірка яєчка на досягнення корзини(лівого краю)
if(eggX<0){
if(eggY==basketY){
score++;
// tone(11, 1000, 100);
} else {
score--;
tone(11, 500, 200);
}
eggX = 11;
eggY = random(0, 2);
}
}