#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
byte tree[8] = {
0b00010,
0b00110,
0b01111,
0b11111,
0b01110,
0b00100,
0b01100,
0b01000
};
byte dinosaur[8] = {
0b00110,
0b00111,
0b01110,
0b01111,
0b01111,
0b11110,
0b01110,
0b01010
};
byte off[8] = {
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000
};
String gameOver = "GAME OVER!";
int linhaDino = 1;
int pinSwapDino = 8;
int swapLinhaDino(int linhaDino);
int obstaculo1[16] = {
0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1
};
int obstaculo2[16] = {
0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0
};
void swapArray(int arr[]) {
if (16 > 1) {
int primeiroElemento = arr[0];
for (int i = 0; i < 16 - 1; i++) {
arr[i] = arr[i + 1];
}
arr[16 - 1] = primeiroElemento;
}
}
void setup() {
Serial.begin(115200);
pinMode(pinSwapDino, INPUT_PULLUP);
lcd.createChar(0, dinosaur);
lcd.createChar(1, tree);
lcd.createChar(2, off);
lcd.begin(16, 2);
}
void loop() {
if(digitalRead(pinSwapDino) == 0) {
Serial.println("Click");
// lcd.setCursor(5, linhaDino);
// lcd.write(byte(2));
linhaDino = swapLinhaDino(linhaDino);
}
lcd.clear();
lcd.setCursor(0, linhaDino);
lcd.write(byte(0));
Serial.println(linhaDino);
if((obstaculo1[0] == 1 && linhaDino == 0) || (obstaculo2[0] == 1 && linhaDino == 1)) {
lcd.setCursor(0, linhaDino);
lcd.write(byte(2));
lcd.setCursor(3, 0);
for (byte i = 0; i < gameOver.length(); i++) {
lcd.print(gameOver[i]);
delay(100);
}
delay(3000);
for(int i=0; i<16; i++) {
lcd.setCursor(i, 0);
lcd.write(byte(2));
lcd.setCursor(i, 1);
lcd.write(byte(2));
}
int obstaculo1[16] = {
0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1
};
int obstaculo2[16] = {
0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0
};
linhaDino = 1;
} else {
for(int i=0; i<16; i++) {
if(obstaculo1[i] == 1) {
lcd.setCursor(i, 0);
lcd.write(byte(1));
}
if(obstaculo2[i] == 1) {
lcd.setCursor(i, 1);
lcd.write(byte(1));
}
}
delay(1000);
swapArray(obstaculo1);
swapArray(obstaculo2);
}
}
int swapLinhaDino(int linhaDino) {
if(linhaDino == 1) {
return 0;
} else {
return 1;
}
}