#include <LiquidCrystal.h>
#define push 15
#define buzzer 16
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
uint8_t dino[8]={0x07,0x17,0x16,0x1F,0x0E,0x02,0x03,0x00};
uint8_t dino2[8]={0x07,0x17,0x16, 0x1F,0x0E,0x08,0x0E,0x00};
uint8_t cact[8] ={0x04,0x15,0x15,0x1F,0x04,0x04,0x04,0x04};
uint8_t cactus2[8] = {0x00,0x00,0x04,0x15,0x15,0x1F,0x04,0x04};
uint8_t ave[8]= {0x04,0x06,0x07,0x1F,0x07,0x06,0x04,0x00};
uint8_t ave2[8] = {0x00,0x00,0x00,0x1F,0x07,0x06,0x04,0x00};
uint8_t sol[8] = {0x1C,0x1D,0x18,0x02,0x08,0x00,0x00,0x00};
uint8_t hongo [8]= {0x00,0x04,0x0E,0x1F,0x1F,0x04,0x04,0x00};
void setup() {
pinMode(push, INPUT_PULLUP);
pinMode(buzzer, OUTPUT);
lcd.begin(16,2);
lcd.createChar(0, dino);
lcd.createChar(1, dino2);
lcd.createChar(2, cact);
lcd.createChar(3, cactus2);
lcd.createChar(4, ave);
lcd.createChar(5, ave2);
lcd.createChar(6, sol);
lcd.createChar(7, hongo);
lcd.home();
lcd.print(" Welcome :) ");
lcd.setCursor(0,1);
lcd.print(" Loading...");
delay(1000);
}
void loop() {
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("PUSH BUTTON");
while(digitalRead(push) == 1);
delay(100);
lcd.clear();
int cactus = 17;
int aves = 10;
int puntos = 0;
int numero = 0;
int hongos = 19;
while(1){
if(digitalRead(push) == 0){
lcd.setCursor(2,1); //limpia estado anterior
lcd.print(" ");
lcd.setCursor(2, 0); //imprime dino
lcd.write((byte) 0);
lcd.setCursor(2,0);
lcd.write((byte)1);
lcd.setCursor(cactus,1); //imprimir obstaculo
lcd.write((byte)2);
delay(300);
lcd.print(" ");
lcd.setCursor(cactus,1);
lcd.print(" ");
delay(300);
lcd.setCursor(aves,0);
lcd.write((byte)4);
lcd.print(" ");
delay(300);
lcd.setCursor(aves,0);
lcd.print(" ");
cactus -=1;
aves -= 1;
hongos -= 1;
if (cactus < 0) {
cactus = 17;
}
if(aves < 0){
aves = 12;
}
if (hongos < 0){
hongos = 23;
}
if(cactus == 2){
puntos += 1;
lcd.setCursor(13,0);
lcd.print(puntos);
}
if(hongos == 2){
puntos += 1;
lcd.setCursor(13,0);
lcd.print(puntos);
}
if(aves == 2){
lcd.clear();
lcd.setCursor(3,0);
lcd.print("GAME OVER");
lcd.setCursor(3,1);
lcd.print("Looser");
tone(buzzer, 700,1000);
delay(300);
tone(buzzer,0,0);
break;
}
}
else{
lcd.setCursor(2,0);
lcd.print(" ");
lcd.setCursor(2, 1);
lcd.write((byte) 0);
lcd.setCursor(cactus,1); //imprimir obstaculo
lcd.write((byte)2);
delay(300);
lcd.print(" ");
lcd.setCursor(2,1);
lcd.write((byte)1);
lcd.setCursor(cactus,1);
lcd.print(" ");
delay(300);
lcd.setCursor(aves,0);
lcd.write((byte)4);
delay(300);
lcd.print(" ");
lcd.setCursor(aves,0);
lcd.print(" ");
lcd.setCursor(hongos ,1);
lcd.write((byte)7);
delay(300);
lcd.print(" ");
lcd.setCursor(hongos,1);
lcd.print(" ");
cactus -=1;
aves -= 1;
hongos -= 1;
if (cactus < 0) {
cactus = 17;
}
if(aves < 0){
aves = 10;
}
if(hongos < 0){
hongos = 23;
}
if(aves == 2){
puntos+= 1;
lcd.setCursor(13,0);
lcd.print(puntos);
}
if(hongos == 2){
puntos+= 1;
lcd.setCursor(13,0);
lcd.print(puntos);
}
if(cactus == 2){
lcd.clear();
lcd.setCursor(3,0);
lcd.print("GAME OVER");
lcd.setCursor(3,1);
lcd.print("Looser");
tone(buzzer, 700,1000);
delay(300);
tone(buzzer,0,0);
break;
}
if(hongos == 2){
lcd.clear();
lcd.setCursor(3,0);
lcd.print("GAME OVER");
lcd.setCursor(3,1);
lcd.print("Looser");
tone(buzzer, 700,1000);
delay(300);
tone(buzzer,0,0);
break;
}
}
}
}