const int LED_1 = 2;
const int LED_2 = 3;
const int LED_3 = 4;
const int LED_4 = 5;
const int LED_5 = 6;
const int LED_6 = 7;
const int LED_7 = 8;
#define BUTTON_1 12
#define BUTTON_2 13
const int buzzer = 9;
int left = 0;
int right = 0;
int position = 4;
int level = 1;
int highscore = 1;
long speed = 1000;
long previousMillis = 0;
long previousMillis2 = 0;
long currentMillis;
long delayMillis = 1200;
long buttonMillis = 1200;
long hardmode1;
long hardmode2;
long hardmode3;
long timer;
long toneb = 100;
void setup() {
Serial.begin(9600);
hardmode1 = 7500;
hardmode2 = 20000;
hardmode3 = 40000;
pinMode(buzzer,OUTPUT);
pinMode(LED_1, OUTPUT);
pinMode(LED_2, OUTPUT);
pinMode(LED_3, OUTPUT);
pinMode(LED_4, OUTPUT);
pinMode(LED_5, OUTPUT);
pinMode(LED_6, OUTPUT);
pinMode(LED_7, OUTPUT);
pinMode(BUTTON_1, INPUT_PULLUP);
pinMode(BUTTON_2, INPUT_PULLUP);
digitalWrite(LED_1, HIGH);
digitalWrite(LED_7, HIGH);
delay(500);
digitalWrite(LED_1, LOW);
digitalWrite(LED_7, LOW);
digitalWrite(LED_2, HIGH);
digitalWrite(LED_6, HIGH);
delay(500);
digitalWrite(LED_2, LOW);
digitalWrite(LED_6, LOW);
digitalWrite(LED_3, HIGH);
digitalWrite(LED_5, HIGH);
delay(500);
digitalWrite(LED_3, LOW);
digitalWrite(LED_5, LOW);
digitalWrite(LED_4, HIGH);
delay(500);
digitalWrite(LED_1, HIGH);
digitalWrite(LED_7, HIGH);
delay(500);
digitalWrite(LED_1, LOW);
digitalWrite(LED_7, LOW);
delay(500);
digitalWrite(LED_1, HIGH);
digitalWrite(LED_7, HIGH);
delay(500);
digitalWrite(LED_1, LOW);
digitalWrite(LED_7, LOW);
}
int ButtonState1 = HIGH;
int ButtonState2 = HIGH;
void loop() {
int value1 = digitalRead((BUTTON_1));
int value2 = digitalRead((BUTTON_2));
unsigned long currentMillis = millis();
if (ButtonState1 != value1) {
ButtonState1 = value1;
if (value1 == LOW) {
if(currentMillis - buttonMillis > 200){
left ++;
right --;
buttonMillis = currentMillis;
}
if (left == 0 && right == 0){left = 1;}
}
}
if (ButtonState2 != value2) {
ButtonState2 = value2;
if (value2 == LOW) {
if(currentMillis - buttonMillis > 200){
left --;
right ++;
buttonMillis = currentMillis;
}
if (left == 0 && right == 0){right = 1;}
}
}
if(left == 0 && right == 0){
unsigned long currentMillis = millis();
previousMillis = currentMillis;
previousMillis2 = currentMillis;
}
if (left >= 1){
if(currentMillis - delayMillis > speed/left){
position --;
delayMillis = currentMillis;
}
}
if (right >= 1){
if(currentMillis - delayMillis > speed/right){
position ++;
delayMillis = currentMillis;
}
}
if (position == 0){
Serial.println("Game Over!");
Serial.println(" ");
tone(buzzer, toneb);
digitalWrite(LED_1, HIGH);
if ((currentMillis - previousMillis2) >= 30000){
digitalWrite(LED_2, HIGH);
if ((currentMillis - previousMillis2) >= 60000){
digitalWrite(LED_3, HIGH);
if ((currentMillis - previousMillis2) >= 90000){
digitalWrite(LED_4, HIGH);}
digitalWrite(LED_5, HIGH);}
digitalWrite(LED_6, HIGH);}
digitalWrite(LED_7, HIGH);
delay(500);
noTone(buzzer);
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, LOW);
digitalWrite(LED_4, LOW);
digitalWrite(LED_5, LOW);
digitalWrite(LED_6, LOW);
digitalWrite(LED_7, LOW);
delay(500);
tone(buzzer, toneb);
digitalWrite(LED_1, HIGH);
if ((currentMillis - previousMillis2) >= 30000){
digitalWrite(LED_2, HIGH);
if ((currentMillis - previousMillis2) >= 60000){
digitalWrite(LED_3, HIGH);
if ((currentMillis - previousMillis2) >= 90000){
digitalWrite(LED_4, HIGH);}
digitalWrite(LED_5, HIGH);}
digitalWrite(LED_6, HIGH);}
digitalWrite(LED_7, HIGH);
delay(500);
noTone(buzzer);
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, LOW);
digitalWrite(LED_4, LOW);
digitalWrite(LED_5, LOW);
digitalWrite(LED_6, LOW);
digitalWrite(LED_7, LOW);
if (level > highscore){
highscore = level;
}
Serial.print("Your Score: ");
Serial.println(level);
Serial.print("Highscore: ");
Serial.println(highscore);
Serial.println(" ");
delay(500);
position = 4;
left = 0;
right = 0;
speed = 1000;
level = 1;
previousMillis = currentMillis;
previousMillis2 = currentMillis;
hardmode1 = random(5000, 10000);
hardmode2 = random(15000, 30000);
hardmode3 = random(35000, 50000);
}
if (position == 1){
digitalWrite(LED_1, HIGH);
digitalWrite(LED_2, LOW);
}
if (position == 2){
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, HIGH);
digitalWrite(LED_3, LOW);
}
if (position == 3){
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, HIGH);
digitalWrite(LED_4, LOW);
}
if (position == 4){
digitalWrite(LED_3, LOW);
digitalWrite(LED_4, HIGH);
digitalWrite(LED_5, LOW);
}
if (position == 5){
digitalWrite(LED_4, LOW);
digitalWrite(LED_5, HIGH);
digitalWrite(LED_6, LOW);
}
if (position == 6){
digitalWrite(LED_5, LOW);
digitalWrite(LED_6, HIGH);
digitalWrite(LED_7, LOW);
}
if (position == 7){
digitalWrite(LED_6, LOW);
digitalWrite(LED_7, HIGH);
}
if (position == 8){
Serial.println("Game Over!");
Serial.println("");
tone(buzzer, toneb);
digitalWrite(LED_1, HIGH);
if ((currentMillis - previousMillis2) >= 30000){
digitalWrite(LED_2, HIGH);
if ((currentMillis - previousMillis2) >= 60000){
digitalWrite(LED_3, HIGH);
if ((currentMillis - previousMillis2) >= 90000){
digitalWrite(LED_4, HIGH);}
digitalWrite(LED_5, HIGH);}
digitalWrite(LED_6, HIGH);}
digitalWrite(LED_7, HIGH);
delay(500);
noTone(buzzer);
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, LOW);
digitalWrite(LED_4, LOW);
digitalWrite(LED_5, LOW);
digitalWrite(LED_6, LOW);
digitalWrite(LED_7, LOW);
delay(500);
tone(buzzer, toneb);
digitalWrite(LED_1, HIGH);
if ((currentMillis - previousMillis2) >= 30000){
digitalWrite(LED_2, HIGH);
if ((currentMillis - previousMillis2) >= 60000){
digitalWrite(LED_3, HIGH);
if ((currentMillis - previousMillis2) >= 90000){
digitalWrite(LED_4, HIGH);}
digitalWrite(LED_5, HIGH);}
digitalWrite(LED_6, HIGH);}
digitalWrite(LED_7, HIGH);
delay(500);
noTone(buzzer);
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, LOW);
digitalWrite(LED_4, LOW);
digitalWrite(LED_5, LOW);
digitalWrite(LED_6, LOW);
digitalWrite(LED_7, LOW);
if (level > highscore){
highscore = level;
}
Serial.print("Your Score: ");
Serial.println(level);
Serial.print("Highscore: ");
Serial.println(highscore);
Serial.println(" ");
delay(500);
position = 4;
left = 0;
right = 0;
speed = 1000;
level = 1;
previousMillis = currentMillis;
previousMillis2 = currentMillis;
hardmode1 = random(5000, 10000);
hardmode2 = random(15000, 30000);
hardmode3 = random(35000, 50000);
}
if (((currentMillis - previousMillis2) >= hardmode1) && position == 4 ){
if (left >= 1){
left = 0;
right = 1;
hardmode1 = 9999999;
}
else if (right >= 1){
left = 1;
right = 0;
hardmode1 = 9999999;
}
}
if (((currentMillis - previousMillis2) >= hardmode2) && position == 4 ){
if (left >= 1){
left = 0;
right = 1;
hardmode1 = 9999999;
}
else if (right >= 1){
left = 1;
right = 0;
hardmode2 = 9999999;
}
}
if (((currentMillis - previousMillis2) >= hardmode3) && position == 4 ){
if (left >= 1){
left = 0;
right = 1;
}
else if (right >= 1){
left = 1;
right = 0;
hardmode3 = 9999999;
}
}
if (currentMillis - previousMillis > 10000) {
if(left == 1 || right == 1){
previousMillis = currentMillis;
speed = speed*0.8;
level ++;
Serial.println("Level Up!");
Serial.print("Level: ");
Serial.println(level);
Serial.println(" ");
if (level > highscore){
Serial.println("New Highscore!");
Serial.println(" ");
}}}}