#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <Buzzer.h>
Buzzer buzzer(12);
const byte ROWS = 4;
const byte COLS = 4;
char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {10, 9, 8, 7};
byte colPins[COLS] = {6, 5, 4, 3};
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd(0x27, 20, 4);
// Define button pins
int buttonPin = 2, buttonState = 0, lastButtonState = 0, first = 0;
// Game variables
int time = 500;
int randN, suggNb = -1;
int toneSound[15] = {100, 300, 500, 800, 1000, 1300, 1500, 1800, 2000, 2200, 2500, 2800, 3100, 3500, 3800};
int laMeme = 0, x, y = -1, attemps = 3, sortie = 0, randomIndis1, randomIndis2, aux, score = 0, cont = 0, zeros = 0, cursorBegin = 0, dino = 0, espace = 1, arbre = 2 ;
long cactus[100] = {0};
byte dinoChar[8] = {B00110, B00111, B00110, B10111, B11110, B01110, B01010, B01010};
byte Espace[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00000};
byte arbreChar[8] = {B00001, B00101, B10101, B10101, B10111, B11100, B00100, B00100};
void setup() {
lcd.init();
lcd.backlight();
lcd.createChar(dino, dinoChar);
lcd.createChar(espace, Espace);
lcd.createChar(arbre, arbreChar);
// Serial.begin(9600);
pinMode(buttonPin, INPUT);
pinMode(12, OUTPUT);
}
void loop() {
lcd.clear();
if (!first) {
first = 1;
lcd.setCursor(0, 0);
lcd.println(" Hello, from ");
lcd.setCursor(0, 2);
lcd.print(" Ousama Halmous");
for (int i = 0; i < 10; i++) {
lcd.setCursor(i + 10, 3);
lcd.print(">");
lcd.setCursor(9 - i, 3);
lcd.print("<");
buzzer.begin(10);
tone(12, i * 100, time);
buzzer.end(100);
delay(100);
}
for (int i = 0; i < 10; i++) {
lcd.setCursor(i + 10, 3);
lcd.print(" ");
lcd.setCursor(9 - i, 3);
lcd.print(" ");
buzzer.begin(10);
tone(12, 900 - i * 100, time * 2);
buzzer.end(100);
delay(100);
}
delay(500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.println(" this is three Game ");
lcd.setCursor(0, 1);
lcd.print(" Please choose your");
lcd.setCursor(0, 2);
lcd.print(" Game to start");
for (int i = 0; i < 10; i++) {
lcd.setCursor(i + 10, 3);
lcd.print("-");
lcd.setCursor(9 - i, 3);
lcd.print("-");
buzzer.begin(10);
tone(12, random(2000), time);
buzzer.end(100);
delay(100);
}
delay(2000);
}
for (int i = 14; i < 100; i++) {
if (cactus[i] == 0) {
zeros++;
if (zeros > 4) {
cactus[i] = random(2);
if (cactus[i - 1] == 1) {
zeros = 0;
}
}
}
}
/* Serial.println(" ");
for (int j = 0; j < 100; j++) {
// Serial.print(cactus[j]);
}
// Serial.println(" ");*/
lcd.clear();
lcd.setCursor(0, 0);
lcd.println("1- Silent World ");
lcd.setCursor(0, 1);
lcd.print("2- T-REX Dinoseur");
lcd.setCursor(0, 2);
lcd.print("3- Guess the Number");
while (1) {
char customKey = customKeypad.getKey();
if (customKey) {
// Serial.print("Key press : ");
// Serial.println(customKey);
if (customKey == '1')
while (1) {silentWorldGame();}
if (customKey == '2')
while (1) {startDinoGame();}
if (customKey == '3')
while (1) {guessNumberGame();}
}
}
}
void regame() {
lcd.clear();
lcd.setCursor(1, 0);
lcd.println("Do want ReGame ? ");
lcd.setCursor(1, 1);
lcd.println("Press * to retry ");
lcd.setCursor(1, 2);
lcd.println("Press # to Menu ");
int test = 0;
while (test == 0) {
char customKey = customKeypad.getKey();
if (customKey) {
// Serial.println(customKey);
if (customKey == '*') {
// Serial.println("Continue");
test = 1;
}
if (customKey == '#') {
// Serial.println("Menu");
loop();
}
}
}
}
// guess Number Game
int charToNumber(char c) {
switch (c) {
case '0': return 0; break;
case '1': return 1; break;
case '2': return 2; break;
case '3': return 3; break;
case '4': return 4; break;
case '5': return 5; break;
case '6': return 6; break;
case '7': return 7; break;
case '8': return 8; break;
case '9': return 9; break;
default : return -1;
}
}
void guessNumberGame1() {
randN = random(10);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Enter a number");
while (1) {
char customKey = customKeypad.getKey();
if (customKey) {
// Serial.print("Key press : ");
// Serial.println(customKey);
suggNb = charToNumber(customKey);
if (suggNb > -1) {
if (suggNb < randN) {
score++;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" the number (");
lcd.print(customKey);
lcd.print(") is ");
lcd.setCursor(0, 1);
lcd.print(" less !");
lcd.setCursor(0, 2);
lcd.print(" Give me a");
lcd.setCursor(0, 3);
lcd.print(" larger number");
//delay(2000);
}
if (suggNb > randN) {
score++;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" the number (");
lcd.print(customKey);
lcd.print(") is ");
lcd.setCursor(0, 1);
lcd.print(" large !");
lcd.setCursor(0, 2);
lcd.print(" Give me a");
lcd.setCursor(0, 3);
lcd.print(" Smaller number");
//delay(2000);
}
if (suggNb == randN) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" wilyeeee !");
lcd.setCursor(0, 1);
lcd.print(customKey);
lcd.print(" : is correctly");
lcd.setCursor(0, 2);
lcd.print(" after : ");
lcd.print(++score);
lcd.print(" fois");
score = 0;
delay(2000);
regame();
guessNumberGame1();
}
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("please enter a");
lcd.setCursor(0, 1);
lcd.print(" number 0 --> 9 : ");
delay(2000);
}
}
}
}
void guessNumberGame2() {
randN = random(10, 99);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Enter a number");
while (1) {
char customKey = customKeypad.getKey();
if (customKey) {
// Serial.print("Key press : ");
// Serial.println(customKey);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" number : ");
lcd.print(customKey);
suggNb = charToNumber(customKey) * 10;
if (suggNb > -1) {
int knb = 1;
while (knb) {
char customKey = customKeypad.getKey();
if (customKey) {
suggNb += charToNumber(customKey) ;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" number : ");
lcd.print(suggNb);
delay(300);
knb = 0;
if (suggNb < randN) {
score++;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" the number (");
lcd.print(suggNb);
lcd.print(") is ");
lcd.setCursor(0, 1);
lcd.print(" less !");
lcd.setCursor(0, 2);
lcd.print(" Give me a");
lcd.setCursor(0, 3);
lcd.print(" larger number");
//delay(2000);
}
if (suggNb > randN) {
score++;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" the number (");
lcd.print(suggNb);
lcd.print(") is ");
lcd.setCursor(0, 1);
lcd.print(" large !");
lcd.setCursor(0, 2);
lcd.print(" Give me a");
lcd.setCursor(0, 3);
lcd.print(" Smaller number");
//delay(2000);
}
if (suggNb == randN) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" wilyeeee !");
lcd.setCursor(0, 1);
lcd.print(suggNb);
lcd.print(" : is correctly");
lcd.setCursor(0, 2);
lcd.print(" after : ");
lcd.print(++score);
lcd.print(" fois");
score = 0;
delay(2000);
regame();
guessNumberGame2();
}
}
}
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("please enter a");
lcd.setCursor(0, 1);
lcd.print(" number 0 --> 9 : ");
delay(2000);
}
}
}
}
void guessNumberGame3() {
randN = random(100, 1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Enter a number");
while (1) {
char customKey = customKeypad.getKey();
if (customKey) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" number : ");
lcd.print(customKey);
suggNb = charToNumber(customKey) * 100;
if (suggNb > -1) {
int knb = 1;
while (knb) {
char customKey = customKeypad.getKey();
if (customKey) {
suggNb += charToNumber(customKey) * 10;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" number : ");
lcd.print(suggNb / 10);
delay(300);
while (knb) {
char customKey = customKeypad.getKey();
if (customKey) {
suggNb += charToNumber(customKey);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" number : ");
lcd.print(suggNb);
delay(300);
knb = 0;
if (suggNb < randN) {
score++;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" the number (");
lcd.print(suggNb);
lcd.print(") is ");
lcd.setCursor(0, 1);
lcd.print(" less !");
lcd.setCursor(0, 2);
lcd.print(" Give me a");
lcd.setCursor(0, 3);
lcd.print(" larger number");
}
if (suggNb > randN) {
score++;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" the number (");
lcd.print(suggNb);
lcd.print(") is ");
lcd.setCursor(0, 1);
lcd.print(" large !");
lcd.setCursor(0, 2);
lcd.print(" Give me a");
lcd.setCursor(0, 3);
lcd.print(" Smaller number");
}
if (suggNb == randN) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" wilyeeee !");
lcd.setCursor(0, 1);
lcd.print(suggNb);
lcd.print(" : is correctly");
lcd.setCursor(0, 2);
lcd.print(" after : ");
lcd.print(++score);
lcd.print(" fois");
score = 0;
delay(2000);
regame();
guessNumberGame3();
}
}
}
}
}
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("please enter a");
lcd.setCursor(0, 1);
lcd.print(" number 0 --> 9 : ");
delay(2000);
}
}
}
}
void guessNumberGame4() {
randN = random(1000, 10000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Enter a number");
while (1) {
char customKey = customKeypad.getKey();
if (customKey) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" number : ");
lcd.print(customKey);
suggNb = charToNumber(customKey) * 1000;
if (suggNb > -1) {
int knb = 1;
while (knb) {
char customKey = customKeypad.getKey();
if (customKey) {
suggNb += charToNumber(customKey) * 100;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" number : ");
lcd.print(suggNb / 100);
delay(300);
while (knb) {
char customKey = customKeypad.getKey();
if (customKey) {
suggNb += charToNumber(customKey)*10;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" number : ");
lcd.print(suggNb/10);
delay(300);
while (knb) {
char customKey = customKeypad.getKey();
if (customKey) {
suggNb += charToNumber(customKey);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" number : ");
lcd.print(suggNb);
delay(300);
knb = 0;
if (suggNb < randN) {
score++;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" the number (");
lcd.print(suggNb);
lcd.print(") is ");
lcd.setCursor(0, 1);
lcd.print(" less !");
lcd.setCursor(0, 2);
lcd.print(" Give me a");
lcd.setCursor(0, 3);
lcd.print(" larger number");
}
if (suggNb > randN) {
score++;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" the number (");
lcd.print(suggNb);
lcd.print(") is ");
lcd.setCursor(0, 1);
lcd.print(" large !");
lcd.setCursor(0, 2);
lcd.print(" Give me a");
lcd.setCursor(0, 3);
lcd.print(" Smaller number");
}
if (suggNb == randN) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" wilyeeee !");
lcd.setCursor(0, 1);
lcd.print(suggNb);
lcd.print(" : is correctly");
lcd.setCursor(0, 2);
lcd.print(" after : ");
lcd.print(++score);
lcd.print(" fois");
score = 0;
delay(2000);
regame();
guessNumberGame3();
}
}
}
}
}
}
}
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("please enter a");
lcd.setCursor(0, 1);
lcd.print(" number 0 --> 9 : ");
delay(2000);
}
}
}
}
void guessNumberGame() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("dificulty is : 1");
lcd.setCursor(0, 1);
lcd.print(" 2");
lcd.setCursor(0, 2);
lcd.print(" 3");
lcd.setCursor(0, 3);
lcd.print(" 4");
while (1) {
char customKey = customKeypad.getKey();
if (customKey) {
// Serial.print("Key press : ");
// Serial.println(customKey);
if (customKey == '1') {
while (1) {
guessNumberGame1();
}
}
if (customKey == '2') {
while (1) {
guessNumberGame2();
}
}
if (customKey == '3') {
while (1) {
guessNumberGame3();
}
}
if (customKey == '4') {
while (1) {
guessNumberGame4();
}
}
}
}
}
// Silent World Game
void randomTable() {
for (int i = 0; i < 500; i++) {
randomIndis1 = random(14) ;
randomIndis2 = random(14) ;
aux = toneSound[randomIndis1];
toneSound[randomIndis1] = toneSound[randomIndis2];
toneSound[randomIndis2] = aux;
}
}
int playerLose() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("oops you lose!");
lcd.setCursor(0, 1);
lcd.print(" score: ");
lcd.print(score);
score = 0;
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.println("Do want ReGame ?");
lcd.setCursor(1, 1);
lcd.println("Press * to retry");
lcd.setCursor(1, 2);
lcd.println("Press # to Menu");
int test = 0;
while (test == 0) {
char customKey = customKeypad.getKey();
if (customKey) {
// Serial.print("Key press");
// Serial.println(customKey);
if (customKey == '*') {
// Serial.println("Continue");
test = 1;
return 1;
}
if (customKey == '#') {
// Serial.println("Menu");
return 0;
}
}
}
}
int runEasy() {
x = random(3);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("attempts: ");
lcd.print(attemps);
lcd.print(" score:");
lcd.print(score);
lcd.setCursor(0, 1);
lcd.print(" What tone");
lcd.setCursor(0, 2);
lcd.print(" did you hear?");
buzzer.begin(10);
tone(12, toneSound[x], time * 2);
buzzer.end(500);
sortie = 0;
while (!sortie) {
char customKey = customKeypad.getKey();
if (customKey) {
sortie = 1;
// Serial.print("Key press : ");
// Serial.println(customKey);
if (customKey == 'A' && x == 0 || customKey == 'B' && x == 1 || customKey == 'C' && x == 2 || customKey == 'D' && x == 3) {
score++;
} else {
attemps--;
if (attemps < 1) {
attemps = 3;
return playerLose();
}
}
}
}
}
void silentWorldGameEasy() {
randomTable();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Listen to");
lcd.setCursor(0, 1);
lcd.print(" the four tones");
lcd.setCursor(0, 2);
lcd.print(" and remember them");
delay(1500);
lcd.clear();
lcd.setCursor(4, 0);
lcd.print(" Note A ");
lcd.setCursor(4, 1);
lcd.print(" Note B ");
lcd.setCursor(4, 2);
lcd.print(" Note C ");
lcd.setCursor(4, 3);
lcd.print(" Note D ");
for (int i = 0; i < 4; i++) {
if (i == 0) {
lcd.setCursor(0, i);
lcd.print("--> ");
}
if (i == 1) {
lcd.setCursor(0, i);
lcd.print("--> ");
lcd.setCursor(0, i - 1);
lcd.print(" ");
}
if (i == 2) {
lcd.setCursor(0, i);
lcd.print("--> ");
lcd.setCursor(0, i - 1);
lcd.print(" ");
}
if (i == 3) {
lcd.setCursor(0, i);
lcd.print("--> ");
lcd.setCursor(0, i - 1);
lcd.print(" ");
}
buzzer.begin(10);
tone(12, toneSound[i], time);
buzzer.end(1000);
// Serial.print("notes Player : ");
// Serial.println(toneSound[i]);
delay(500);
}
delay(1000);
int tt = runEasy();
while (tt == 1) {
tt = runEasy();
}
loop();
}
int runMedium() {
x = random(5);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("attempts: ");
lcd.print(attemps);
lcd.print(" score:");
lcd.print(score);
lcd.setCursor(0, 1);
lcd.print(" What tone");
lcd.setCursor(0, 2);
lcd.print(" did you hear?");
buzzer.begin(10);
tone(12, toneSound[x], time * 2);
buzzer.end(500);
sortie = 0;
while (!sortie) {
char customKey = customKeypad.getKey();
if (customKey) {
sortie = 1;
// Serial.print("Key press : ");
// Serial.println(customKey);
if (customKey == '1' && x == 0 || customKey == '2' && x == 1 || customKey == '3' && x == 2 || customKey == '4' && x == 3 || customKey == '5' && x == 4 || customKey == '6' && x == 5) {
score++;
} else {
attemps--;
if (attemps < 1) {
attemps = 3;
return playerLose();
}
}
}
}
}
void silentWorldGameMedium() {
randomTable();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Listen to");
lcd.setCursor(0, 1);
lcd.print(" the six tones");
lcd.setCursor(0, 2);
lcd.print(" and remember them");
delay(1500);
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("Note 1 ");
lcd.setCursor(3, 1);
lcd.print("Note 2 ");
lcd.setCursor(3, 2);
lcd.print("Note 3 ");
lcd.setCursor(12, 0);
lcd.print("Note 4 ");
lcd.setCursor(12, 1);
lcd.print("Note 5 ");
lcd.setCursor(12, 2);
lcd.print("Note 6 ");
for (int i = 0; i < 6; i++) {
if (i == 0) {
lcd.setCursor(0, 0);
lcd.print("-->");
}
if (i == 1) {
lcd.setCursor(0, 1);
lcd.print("-->");
lcd.setCursor(0, 0);
lcd.print(" ");
}
if (i == 2) {
lcd.setCursor(0, 2);
lcd.print("-->");
lcd.setCursor(0, 1);
lcd.print(" ");
}
if (i == 3) {
lcd.setCursor(9, 0);
lcd.print("-->");
lcd.setCursor(0, 2);
lcd.print(" ");
}
if (i == 4) {
lcd.setCursor(9, 1);
lcd.print("-->");
lcd.setCursor(9, 0);
lcd.print(" ");
}
if (i == 5) {
lcd.setCursor(9, 2);
lcd.print("-->");
lcd.setCursor(9, 1);
lcd.print(" ");
}
buzzer.begin(10);
tone(12, toneSound[i], time);
buzzer.end(1000);
// Serial.print("notes Player : ");
// Serial.println(toneSound[i]);
delay(500);
}
delay(1000);
int tt = runMedium();
while (tt == 1) {
tt = runMedium();
}
loop();
}
int runDifficult() {
x = random(7);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("attempts: ");
lcd.print(attemps);
lcd.print(" score:");
lcd.print(score);
lcd.setCursor(0, 1);
lcd.print(" What tone");
lcd.setCursor(0, 2);
lcd.print(" did you hear?");
buzzer.begin(10);
tone(12, toneSound[x], time * 2);
buzzer.end(500);
sortie = 0;
while (!sortie) {
char customKey = customKeypad.getKey();
if (customKey) {
sortie = 1;
// Serial.print("Key press : ");
// Serial.println(customKey);
if (customKey == '1' && x == 0 || customKey == '2' && x == 1 || customKey == '3' && x == 2 || customKey == '4' && x == 3 || customKey == '5' && x == 4 || customKey == '6' && x == 5 || customKey == '6' && x == 6 || customKey == '7' && x == 7 || customKey == '8' && x == 8) {
score++;
} else {
attemps--;
if (attemps < 1) {
attemps = 3;
return playerLose();
}
}
}
}
}
void silentWorldGameDifficult() {
randomTable();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Listen to");
lcd.setCursor(0, 1);
lcd.print(" the eight tones");
lcd.setCursor(0, 2);
lcd.print(" and remember them");
delay(1500);
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("Note 1 ");
lcd.setCursor(3, 1);
lcd.print("Note 2 ");
lcd.setCursor(3, 2);
lcd.print("Note 3 ");
lcd.setCursor(3, 3);
lcd.print("Note 4 ");
lcd.setCursor(12, 0);
lcd.print("Note 5 ");
lcd.setCursor(12, 1);
lcd.print("Note 6 ");
lcd.setCursor(12, 2);
lcd.print("Note 7 ");
lcd.setCursor(12, 3);
lcd.print("Note 8 ");
for (int i = 0; i < 8; i++) {
if (i == 0) {
lcd.setCursor(0, 0);
lcd.print("-->");
}
if (i == 1) {
lcd.setCursor(0, 1);
lcd.print("-->");
lcd.setCursor(0, 0);
lcd.print(" ");
}
if (i == 2) {
lcd.setCursor(0, 2);
lcd.print("-->");
lcd.setCursor(0, 1);
lcd.print(" ");
}
if (i == 3) {
lcd.setCursor(0, 3);
lcd.print("-->");
lcd.setCursor(0, 2);
lcd.print(" ");
}
if (i == 4) {
lcd.setCursor(9, 0);
lcd.print("-->");
lcd.setCursor(0, 3);
lcd.print(" ");
}
if (i == 5) {
lcd.setCursor(9, 1);
lcd.print("-->");
lcd.setCursor(9, 0);
lcd.print(" ");
}
if (i == 6) {
lcd.setCursor(9, 2);
lcd.print("-->");
lcd.setCursor(9, 1);
lcd.print(" ");
}
if (i == 7) {
lcd.setCursor(9, 3);
lcd.print("-->");
lcd.setCursor(9, 2);
lcd.print(" ");
}
buzzer.begin(10);
tone(12, toneSound[i], time);
buzzer.end(1000);
// Serial.print("notes Player : ");
// Serial.println(toneSound[i]);
delay(500);
}
delay(1000);
int tt = runDifficult();
while (tt == 1) {
tt = runDifficult();
}
loop();
}
void silentWorldGame() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.println(" There are three ");
lcd.setCursor(0, 1);
lcd.print("levels of difficulty");
lcd.setCursor(0, 2);
lcd.print(" in the Game");
delay(30);
lcd.clear();
lcd.setCursor(0, 0);
lcd.println("choose your level :");
lcd.setCursor(0, 1);
lcd.print(" 1- Easy");
lcd.setCursor(0, 2);
lcd.print(" 2- Medium");
lcd.setCursor(0, 3);
lcd.print(" 3- Difficult");
while (1) {
char customKey = customKeypad.getKey();
if (customKey) {
// Serial.print("Key press : ");
// Serial.println(customKey);
if (customKey == '1') {
while (1) {
silentWorldGameEasy();
}
}
if (customKey == '2') {
while (1) {
silentWorldGameMedium();
}
}
if (customKey == '3') {
while (1) {
silentWorldGameDifficult();
}
}
}
}
}
// T-REX Dinoseur Game
void jump() {
lcd.setCursor(1, 2);
lcd.write(dino);
lcd.setCursor(1, 3);
lcd.write(espace);
}
void downJump() {
lcd.setCursor(1, 2);
lcd.write(espace);
lcd.setCursor(1, 3);
lcd.write(dino);
}
void pas(int test) {
// score++;
int temp = 0;
for (int i = 0; i < 20; i++) {
if (i != 1) {
lcd.setCursor(i, 3);
if (cactus[i + cursorBegin] == 1) {
lcd.write(arbre);
} else {
lcd.write(espace);
}
}
}
cursorBegin++;
if (cursorBegin > 98) {
cursorBegin = 0;
lcd.clear();
lcd.println("Wiiiin !");
lcd.println("Wiiiin !");
lcd.println("Wiiiin !");
lcd.println("Wiiiin !");
delay(1000);
lcd.clear();
lcd.println("Game Over");
delay(3000);
loop();
}
if (cactus[cursorBegin + 1] == 1) {
score++;
}
for (int i = 0; i < 500; i++) {
delay(1);
if (digitalRead(buttonPin) != lastButtonState) {
buttonState = !buttonState;
}
}
if (buttonState != lastButtonState && test != 0) {
// Serial.print("button is pressed ");
// Serial.println(cont);
cont++; // debugging button press
jump();
pas(0);
pas(0);
pas(0);
pas(0);
downJump();
}
}
void startDinoGame() {
lcd.clear();
lcd.setCursor(1, 0);
lcd.print("T-REX Dinoseur Game");
lcd.setCursor(1, 1);
lcd.print("score : ");
lcd.print(score);
lcd.setCursor(1, 2);
lcd.write(espace);
lcd.setCursor(1, 3);
lcd.write(dino);
// Check button state
buttonState = digitalRead(buttonPin);
// If button is pressed
if (cactus[cursorBegin + 1] == 1) {
lcd.clear();
lcd.setCursor(1, 0);
lcd.println("you lose");
lcd.setCursor(1, 2);
lcd.print("score = ");
lcd.print(score);
delay(3000);
cursorBegin = 0;
score = 0;
regame();
} else {
pas(1);
}
lastButtonState = buttonState;
}