#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
const int button1Pin = A0;
const int button2Pin = A1;
const int button3Pin = A2;
const int button4Pin = A3;
const int ledPin = 6;
int gameModeI = 0;
int timeTrial = 0;
enum State {HEALTHY, INFECTED, TREATMENT_IN_PROGRESS, COUNTDOWN};
State currentState = HEALTHY;
bool ledState = false;
unsigned long countdownStartTime = 0;
char *gameModeNames[] = {"Time Trial", "Counting", "Placeholder"};
char *timeTrialNames[] = {"Easy", "Normal", "Hard", "Custom"};
void setup() {
pinMode(button1Pin, INPUT_PULLUP);
pinMode(button2Pin, INPUT_PULLUP);
pinMode(button3Pin, INPUT_PULLUP);
pinMode(button4Pin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
lcd.begin(16, 2);
lcd.print(" WELCOME!");
}
void loop() {
if (digitalRead(button3Pin) != HIGH) {
currentState = COUNTDOWN;
countdownStartTime = millis();
lcd.clear();
lcd.print(" Select Mode ");
lcd.setCursor(0,1) ; //sets cursor to second line first row
lcd.print(" Time Trial ");
delay(500);
while (digitalRead(button3Pin) != LOW) {
currentState = COUNTDOWN;
countdownStartTime = millis();
if (digitalRead(button4Pin) == LOW) {
if(gameModeI == 2){
delay(500);
lcd.clear();
gameModeI = gameModeI;
lcd.print(" Select Mode ");
lcd.setCursor(0,1) ; //sets cursor to second line first row
lcd.print(gameModeNames[gameModeI]);
}
else{
delay(500);
lcd.clear();
gameModeI = gameModeI+1;
lcd.print(" Select Mode ");
lcd.setCursor(0,1) ; //sets cursor to second line first row
lcd.print(gameModeNames[gameModeI]);
}
}
if (digitalRead(button2Pin) == LOW) {
if(gameModeI == 0){
delay(500);
lcd.clear();
gameModeI = gameModeI;
lcd.print(" Select Mode ");
lcd.setCursor(0,1) ; //sets cursor to second line first row
lcd.print(gameModeNames[gameModeI]);
}
else{
delay(500);
lcd.clear();
gameModeI = gameModeI-1;
lcd.print(" Select Mode ");
lcd.setCursor(0,1) ; //sets cursor to second line first row
lcd.print(gameModeNames[gameModeI]);
}
}
}
}
while (digitalRead(button3Pin) != HIGH) {
if(gameModeI == 0){
currentState = COUNTDOWN;
countdownStartTime = millis();
if (digitalRead(button4Pin) == LOW) {
if(timeTrial == 3){
delay(500);
lcd.clear();
gameModeI = gameModeI;
lcd.print(" Select Settings ");
lcd.setCursor(0,1) ; //sets cursor to second line first row
lcd.print(timeTrialNames[timeTrial]);
}
else{
delay(500);
lcd.clear();
gameModeI = gameModeI+1;
lcd.print(" Select Settings ");
lcd.setCursor(0,1) ; //sets cursor to second line first row
lcd.print(timeTrialNames[timeTrial]);
}
}
if (digitalRead(button2Pin) == LOW) {
if(timeTrial == 0){
delay(500);
lcd.clear();
gameModeI = gameModeI;
lcd.print(" Select Settings ");
lcd.setCursor(0,1) ; //sets cursor to second line first row
lcd.print(timeTrialNames[timeTrial]);
}
else{
delay(500);
lcd.clear();
gameModeI = gameModeI-1;
lcd.print(" Select Settings ");
lcd.setCursor(0,1) ; //sets cursor to second line first row
lcd.print(timeTrialNames[timeTrial]);
}
}
}
}
}
//.