@UKHeliBob, I know this is an old topic but could you help explain this? I want to completely clear whatever information is stored in my arrays after someone fails the game. How do I do this?
int ledArray[55];
int buttonArray[100];
int loopCounter;
int ledCounter;
int inputCounter;
int game;
int waiting;
int pass;
void ledPrompt()//prompts player for inout during game after the LEDs have been picked randomly each round
{digitalWrite(10, HIGH);
delay(1000);
digitalWrite(10, LOW);
delay(50);}
void gameHasStarted() //LED prompt after first button is pushed to start the game
{
digitalWrite(10, HIGH);
delay(1000);
digitalWrite(10, LOW);
delay(100);}
void fail() //LED sequence when the wrong input is entered
{digitalWrite(2, HIGH);
delay(1000);
digitalWrite(3, HIGH);
delay(1000);
digitalWrite(4, HIGH);
delay(1000);
digitalWrite(5, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(50);
digitalWrite(3, LOW);
delay(50);
digitalWrite(4, LOW);
delay(50);
digitalWrite(5, LOW);
delay(50);}
void waitToStart() //cycle through LEDs while waiting to start the game
{digitalWrite(2, HIGH);
delay(250);
digitalWrite(2, LOW);
delay(250);
digitalWrite(3, HIGH);
delay(250);
digitalWrite(3, LOW);
delay(250);
digitalWrite(4, HIGH);
delay(250);
digitalWrite(4, LOW);
delay(250);
digitalWrite(5, HIGH);
delay(250);
digitalWrite(5, LOW);
delay(250);}
const int buttonRed = 6;
const int buttonYellow = 7;
const int buttonGreen = 9;
const int buttonBlue = 8;
const int r = 2;
const int y = 3;
const int b = 4;
const int g = 5;
const int x = 10;
int randNumber;
int array_Cmp;
int initiate()//FUNCTION WAITS FOR ANY OF 4 BUTTONS TO BE PUSHED TO START THE GAME
{game=0;
waiting=0;
loopCounter=1;
randNumber=0;
ledCounter=0;
inputCounter=0;
pass=2;
//FUNCTION INCLUDES ALL OF THE ASSUMPTIONS NEEDED TO EXECUTE THE 1ST ROUND PROPERLY
do{
if (digitalRead(buttonRed)==LOW)
{game=2;
gameHasStarted();}
if (digitalRead(buttonGreen)==LOW)
{game=2;
gameHasStarted();}
if (digitalRead(buttonBlue)==LOW)
{game=2;
gameHasStarted();}
if (digitalRead(buttonYellow)==LOW)
{game=2;
gameHasStarted();}
else {waitToStart();}
}
while(game <= 1);
delay(1000);
}//END OF GAME INITIATOR FUNCTION
int pickLed ()//FUNCTION WILL PICK A RANDOM LED
{
do{
randNumber=random(2,6);
digitalWrite(randNumber, HIGH);
delay(250);
digitalWrite(randNumber, LOW);
delay(250);
if (randNumber==2)
{ledArray[loopCounter]=0;
ledCounter++;
delay(500);}
if(randNumber==3)
{ledArray[loopCounter]=1;
ledCounter++;
delay(500);}
if(randNumber==4)
{ledArray[loopCounter]=2;
ledCounter++;
delay(500);}
if(randNumber==5)
{ledArray[loopCounter]=3;
ledCounter++;
delay(500);}
}
while (ledCounter < loopCounter);
ledPrompt();//signals for input after it's done picking the LEDs for each round
}//END OF PICKLED FUNCTION
int waitForInput ()//FUNCTION WILL WAIT FOR USER INPUT OR END GAME AFTER 10 SECONS OF NO INPUT
{
do
{
if (digitalRead(buttonRed)==LOW)
{digitalWrite(r, HIGH);
inputCounter++;
delay(150);
digitalWrite(r,LOW);
delay(150);
buttonArray[loopCounter]=0;}
if (digitalRead(buttonYellow)==LOW)
{digitalWrite(y, HIGH);
inputCounter++;
delay(150);
digitalWrite(y,LOW);
delay(150);
buttonArray[loopCounter]=1;}
if (digitalRead(buttonBlue)==LOW)
{digitalWrite(b, HIGH);
inputCounter++;
delay(150);
digitalWrite(b,LOW);
delay(150);
buttonArray[loopCounter]=2;}
if (digitalRead(buttonGreen)==LOW)
{digitalWrite(g, HIGH);
inputCounter++;
delay(150);
digitalWrite(g, LOW);
delay(150);
buttonArray[loopCounter]=3;}
}
while (inputCounter < loopCounter);//WAIT FOR INPUT
} //END OF WAIT_FOR_INPUT FUNCTION
int scoreInput ()//START OF SCORE_INPUT FUNCTION
{if (memcmp(ledArray, buttonArray, sizeof(ledArray)) == 0)
{
delay(1000);
loopCounter++;
ledCounter=0;
inputCounter=0;
game++;
pass=2;}
else
{fail();
loopCounter=0;
ledCounter=0;
inputCounter=0;
pass=0;
}
}
//END OF SCORE_INPUT FUNCTION
void setup ()
{randomSeed(analogRead(0));
pinMode (r, OUTPUT);
pinMode (y, OUTPUT);
pinMode (b, OUTPUT);
pinMode (g, OUTPUT);
pinMode (buttonRed, INPUT);
pinMode (buttonYellow, INPUT);
pinMode (buttonGreen, INPUT);
pinMode (buttonBlue, INPUT);
pinMode (x, OUTPUT);
game=0;
waiting=0;
loopCounter=1;
randNumber=0;
ledCounter=0;
inputCounter=0;
pass=2;
}
void loop ()//by using functions, the void loop section here is very short.
{initiate();
do{
pickLed();
waitForInput();
scoreInput();
if (loopCounter > 10)//states the game should end after round 10
{pass=0;}
}
while(pass>1); // keeps the game going until round 10 or fail
}