I'm writing a program that simulates the technical operations of the game show Press Your Luck. However, whenever I have the program in "game mode" and try to send the string "cashandspin" to the Serial Monitor after enabling the buttonPressed flag, nothing happens. I'm completely stumped because all other reserved strings function just fine. Can anyone identify the culprit in the provided code? Thanks!
Code:
bool active;
const int buzzer = 2;
const int button = 8;
const int LED = 4;
String answer;
int Spins;
bool turnActive;
bool gameMode;
bool loopStopper;
bool buttonPressed;
int score;
int PrizeValue;
bool manualPrize;
bool manualPrizeAndSpin;
int instantCash;
void setup(){
pinMode(buzzer, OUTPUT);
pinMode(LED, OUTPUT); // Signaling LED
pinMode(button, INPUT); // Big red button
digitalWrite(LED, LOW); // Turn off LED
Serial.begin(9600);
Spins = 0;
active = false;
turnActive = false;
gameMode = false;
loopStopper = false;
manualPrizeAndSpin = false;
manualPrize = false;
}
void loop(){
if (!active && !gameMode && digitalRead(button) == HIGH){
active = true;
digitalWrite(LED, HIGH); // Turn on signaling LED
delay(250);
for(int i=0; i<4; i++){ // Simulate the 4 beeps made whenever a contestant buzzes in
tone(buzzer, 1200);
delay(50);
noTone(buzzer);
delay(50);
}
Serial.println("type y for correct or anything else for incorrect\n");
}
responseChecker(); // Check whether player answers correctly or not
boardMode();
}
void responseChecker(){
if(Serial.available()){
answer = Serial.readStringUntil('/n');
answer.trim();
if(active){
if(answer.equals("y")){
Serial.println("Correct! You win 3 spins!\n");
for(int i=0; i<8; i++){
digitalWrite(LED, LOW);
delay(250);
digitalWrite(LED, HIGH);
delay(250);
}
Spins++;
Spins++;
Spins++;
tone(buzzer, 1050);
delay(200);
noTone(buzzer);
Serial.println("Spins:");
Serial.println(Spins);
digitalWrite(LED, LOW);
active = false;
} else{
Serial.println("Incorrect answer. No spins awarded\n");
Serial.println("Spins:");
Serial.println(Spins);
digitalWrite(LED, LOW);
active = false;
}
}
if(answer.equals("t")){
Serial.println("Turn activated");
turnActive = true;
digitalWrite(LED, HIGH);
}
if(turnActive){
if(answer.equals("1") && turnActive){
Serial.println("Correct! You win 1 spin!\n");
for(int i=0; i<8; i++){
digitalWrite(LED, LOW);
delay(250);
digitalWrite(LED, HIGH);
delay(250);
}
Spins++;
tone(buzzer, 1050);
delay(200);
noTone(buzzer);
Serial.println("Spins:");
Serial.println(Spins);
digitalWrite(LED, LOW);
turnActive = false;
} else if(answer.equals("0") && turnActive){
Serial.println("Incorrect answer. No spins awarded\n");
Serial.println("Spins:");
Serial.println(Spins);
digitalWrite(LED, LOW);
turnActive = false;
}
}
}
}
void boardMode(){
if(answer.equals("b") && !loopStopper){
Serial.println("big board mode");
gameMode = true;
loopStopper = true;
} else if(answer.equals("q") && loopStopper){
Serial.println("trivia mode");
gameMode = false;
loopStopper = false;
} if(gameMode){
if(!buttonPressed && digitalRead(button) == HIGH){
buttonPressed = true;
Serial.println("Enter prize <No pun intended!>\n");
}
if(buttonPressed){
if(answer.equals("whammy")){
Serial.println("Oh no! A whammy!");
delay(500);
score = 0;
Spins--;
Serial.println("Spins:");
Serial.println(Spins);
Serial.println();
Serial.println("Score:");
Serial.println(score);
Serial.println();
buttonPressed = false;
answer = "";
} else if(answer.equals("prize")){
PrizeValue = random(200, 1500);
score += PrizeValue;
Serial.println("You win a prize! a value of: ");
Serial.println(PrizeValue);
Serial.println();
Spins--;
Serial.println("Spins:");
Serial.println(Spins);
Serial.println();
Serial.println("Score:");
Serial.println(score);
Serial.println();
buttonPressed = false;
answer = "";
} else if(answer.equals("bigprize")){
PrizeValue = random(500, 5000);
score += PrizeValue;
Serial.println("You win a prize! a value of: ");
Serial.println(PrizeValue);
Serial.println();
Spins--;
Serial.println("Spins:");
Serial.println(Spins);
Serial.println();
Serial.println("Score:");
Serial.println(score);
Serial.println();
buttonPressed = false;
answer = "";
} else if(answer.equals("spin") && !manualPrizeAndSpin){
manualPrizeAndSpin = true;
Serial.println("You selected cash and spin");
} else if(answer.equals("cash") && !manualPrize){
manualPrize = true;
Serial.println("You selected cash");
}
if(manualPrize){
if(Serial.available() > 0){
instantCash = Serial.parseInt();
score += instantCash;
Spins--;
Serial.println("Spins:");
Serial.println(Spins);
Serial.println();
Serial.println("Score:");
Serial.println(score);
Serial.println();
manualPrize = false;
buttonPressed = false;
answer = "";
}
}if(manualPrizeAndSpin){
if(Serial.available() > 0){
instantCash = Serial.parseInt();
score += instantCash;
Serial.println("Spins:");
Serial.println(Spins);
Serial.println();
Serial.println("Score:");
Serial.println(score);
Serial.println();
manualPrizeAndSpin = false;
buttonPressed = false;
answer = "";
}
}
}
}
}