#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#define button 2
#define buzzer 0
uint8_t cactus[8] = {0x06,0x16,0x16,0x1E,0x1E,0x07,0x06,0x1F};
uint8_t dino[8] = {0x07,0x17,0x16,0x1F,0x0E,0x08,0x0C,0x00};
uint8_t pollo[8] = {0x00,0x00,0x01,0x16,0x1E,0x0C,0x1E,0x1B};
int P=0;
void setup() {
lcd.init();
lcd.backlight();
pinMode(button, INPUT_PULLUP);
pinMode(buzzer, OUTPUT);
lcd.begin(16, 2);
lcd.createChar(0, dino);
lcd.begin(16, 2);
lcd.createChar(2, cactus);
lcd.begin(16, 2);
lcd.createChar(4, pollo);
tone(buzzer,25);
delay(20);
tone(buzzer,0);
tone(buzzer,150);
delay(20);
tone(buzzer,0);
tone(buzzer,250);
delay(35);
tone(buzzer,0);
while(digitalRead(button)){
lcd.setCursor(0, 0);
lcd.print(" Dino Game");
lcd.setCursor(0, 1);
lcd.print(" Press Start");
}
lcd.clear();
}
int estado;
void loop() {
for(int T = 100; T >= 10; T-=2){
P+=2;
// cactus
for(int j = 15; j >= 0; j--){
lcd.setCursor(j,1);
lcd.write((byte)2);
delay(T);
lcd.clear();
estado = digitalRead(button);
if (estado){
lcd.setCursor(0, 1);
lcd.write((byte)0);
if (j == 1) {
lcd.setCursor(1, 0);
tone(buzzer,2500);
delay(10);
tone(buzzer,0);
tone(buzzer,1600);
delay(10);
tone(buzzer,0);
tone(buzzer,1000);
delay(50);
tone(buzzer,0);
lcd.clear();
lcd.print(" Game Over ");
lcd.setCursor(1,1);
lcd.print(" Score: ");
lcd.print(P);
delay(2000);
lcd.clear();
T=100;
P=0;
break;
}
}
else{
lcd.setCursor(1, 0);
lcd.write((byte)0);
}
}
//pollo
for(int b = 15; b >= 0; b--){
lcd.setCursor(b,0);
lcd.write((byte)4);
delay(T);
lcd.clear();
estado = digitalRead(button);
if (estado){
lcd.setCursor(0, 1);
lcd.write((byte)0);
}
else{
lcd.setCursor(1, 0);
lcd.write((byte)0);
if (b == 1) {
lcd.setCursor(1, 0);
lcd.write((byte)0);
lcd.setCursor(1, 0);
tone(buzzer,1000);
delay(10);
tone(buzzer,0);
tone(buzzer,1900);
delay(10);
tone(buzzer,0);
tone(buzzer,2500);
delay(50);
tone(buzzer,0);
lcd.clear();
lcd.print(" Game Over ");
lcd.setCursor(1,1);
lcd.print(" puntuacion: ");
lcd.print(P);
delay(2000);
lcd.clear();
T=100;
P=0;
break;
}
}
}
delay(1);
}