#include <LiquidCrystal.h>
#define PUSH 19
#define BUZZER 14
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
uint8_t C0[8]={0x0E,0x1F,0x15,0x1F,0x15,0x00,0x00,0x00};
uint8_t C1[8]={0x00,0x00,0x0A,0x00,0x11,0x0E,0x00,0x00};
uint8_t C2[8]={0x07,0x15,0x1E,0x1E,0x0E,0x12,0x1B,0x00};
uint8_t C3[8]={0x07,0x17,0x16,0x1F,0x0E,0x08,0x0C,0x00};
uint8_t C5[8]={0x06,0x06,0x17,0x17,0x1E,0x06,0x06,0x0F};
void setup() {
// put your setup code here, to run once:
pinMode(PUSH, INPUT_PULLUP);
pinMode(BUZZER, OUTPUT);
lcd.begin(16, 2);
lcd.createChar(0, C0);
lcd.createChar(1, C1);
lcd.createChar(2, C2);
lcd.createChar(3, C3);
lcd.createChar(5, C5);
lcd.home();
lcd.setCursor(1, 0);
lcd.print("!!QUE COMIENCE");
lcd.setCursor(4, 1);
lcd.print("EL JUEGO!!");
delay(5000);
}
void loop() {
// put your main code here, to run repeatedly:
lcd.clear();
while(digitalRead(PUSH)){
lcd.setCursor(0, 0);
lcd.print("Presiona el Push");
lcd.setCursor(2, 1);
lcd.print("Para Jugar!!");
delay(200);
lcd.clear();
delay(200);
}
while(digitalRead(PUSH) == 1);{
lcd.clear();
delay(50);
}
int const dinorexForward = 2;
int const dinorexBack = 3;
int piso = 16;
int volar = 22;
int line = 0;
int pushState = 0;
int lastPushState = 0;
int points = 0;
while(1){
pushState = digitalRead(PUSH);
if(pushState != lastPushState){
if(pushState == 1){
line != line;
}
delay(20);
}
lastPushState = pushState;
lcd.setCursor(3, line);
lcd.write((byte) dinorexBack);
if(line == 1){
lcd.setCursor(2, 0);
lcd.print(" ");
}else{
lcd.setCursor(2, 1);
lcd.print(" ");
}
delay(200);
pushState = digitalRead(PUSH);
if(pushState != lastPushState){
if(pushState == 1){
line = !line;
}
delay(20);
}
lastPushState = pushState;
lcd.setCursor(piso, 1);
lcd.write((byte) 5);
lcd.setCursor(volar, 0);
lcd.write((byte) 0);
lcd.setCursor(3, line);
lcd.write((byte) dinorexForward);
if(line == 1){
lcd.setCursor(3, 0);
lcd.print(" ");
}else{
lcd.setCursor(3, 1);
lcd.print(" ");
}
delay(200);
pushState = digitalRead(PUSH);
if(pushState != lastPushState){
if(pushState == 1){
line = !line;
}
delay(10);
}
lastPushState = pushState;
lcd.setCursor(volar, 0);
lcd.print(" ");
lcd.setCursor(piso, 1);
lcd.print(" ");
piso -= 1;
volar -= 1;
if(volar == 2 && line == 0){
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("!!GAME OVER!!");
tone(BUZZER, 300, 20);
delay(6000);
break;
}
if(piso == 2 && line == 1){
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("!!GAME OVER!!");
tone(BUZZER, 300, 20);
delay(6000);
break;
}
if(volar == 2 && line == 1){
points += 1;
lcd.setCursor(0, 0);
lcd.print(points);
tone(BUZZER, 3000, 1);
}
if(piso == 2 && line == 0){
points += 1;
lcd.setCursor(0, 0);
lcd.print(points);
tone(BUZZER, 3000, 1);
}
if(piso == 0)
piso = 16;
if(volar == 2)
volar = 22;
}
}