Repeating same LED sequence but incrementing by 1 each round (Arrays)?

SO, I thought I was done with my Simon Says project but nope. The way I have it setup chooses a random LED sequence each round. The teacher wants it to use the same LED sequence each round but to add a random 1+ with each round. So I would need to store each sequence in an array and then recall it to be played again and then add one to it. I feel like it's easy but my brain is fried already from everything I've done this last week. BTW guys, this is supposed to be a 2 partner thing, but I'm carrying all the weight by myself. :((

int ledArray[55];
int buttonArray[100];
int loopCounter;
int ledCounter;
int inputCounter;
int game;
int waiting;
int pass;
int wait;       
int timeUp;

//ALL THE BUTTONS & LEDS ARE GIVEN NAMES HERE SO THEY'RE EASIER TO REFERENCE 
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;//LED ON PIN 10 IS THE WHITE LED USED FOR PROMPTS


///USED FOR PROCESSING AND COMPARING INPUTS
int randNumber;
int array_Cmp;

void youWin ()
  {digitalWrite(2, HIGH);
  delay(100);
  digitalWrite(2, LOW);
  delay(100);
  digitalWrite(3, HIGH);
  delay(100);
  digitalWrite(3, LOW);
  delay(100);
  digitalWrite(4, HIGH);
  delay(100);
  digitalWrite(4, LOW);
  delay(100);
  digitalWrite(5, HIGH);
  delay(100);
  digitalWrite(5, LOW);
  delay(100);}
 
void ledPrompt()
//prompts player for inout during game after
//the LEDs have been picked randomly each round
{digitalWrite(x, HIGH);
  delay(1000);
  digitalWrite(x, 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() //cycles 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);}

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;
ledArray[55]=0;
buttonArray[100]=0;
//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(500);
  digitalWrite(randNumber, LOW);
  delay(100);
  if (randNumber==2)
   {ledArray[loopCounter]=0;
    ledCounter++;}
   if(randNumber==3)
   {ledArray[loopCounter]=1;
    ledCounter++;}
   if(randNumber==4)
   {ledArray[loopCounter]=2;
  ledCounter++;}
   if(randNumber==5)
  {ledArray[loopCounter]=3;
  ledCounter++;}
   }
  while (ledCounter < loopCounter);
  ledPrompt();//signals for input after it's done picking the LEDs for each round
   wait==1;}//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;}
     else{wait++; //the wait counter is incremented each time the loop reads all 4 input and no input has been made
     delay(250);}//the delay here adds 1/4th of a second each time no input is made (every 4 loop here is 1 second);
     
     if (wait>40)//40 divided by 0.25 = 10 seconds of wait
     {
      pass=0;
      fail();
      } //after waiting 10 seconds for input the game automatically fails. 
 }
 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
    {
      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;
timeUp=2;
initiate();}


void loop ()//by using functions, the void loop section here is very short. 
{
do{
pickLed();
waitForInput();
scoreInput();
if (loopCounter > 4)//states the game should end after round 10
{youWin();
  pass=0;}
}
while(pass>1); // keeps the game going until round 10 or fail
initiate();}

premobowei:
The teacher wants it to use the same LED sequence each round but to add a random 1+ with each round.

What does that mean?

How do I make this into a function?
the way I have it setup now, is how my teacher wants it. Like he wants the first level of the game to pick the first random LED, then he wants the second level to recall that LED from the 1st level and then pick another LED to add to it, and then the third level the same recalling 2 LEDs from the last level and then adding a third random one and so forth...
I have this setup now just to test and it works.
But how do I make it into a function so I don't have to write it out for every level. what's a clever way to automatically repeat the sequence up to level ten while ensuring it populates the array appropriately?

int randLed;
int led[3];
int level;
void setup()
{
  pinMode(2, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(10, OUTPUT);
  randomSeed(analogRead(0));
}

void loop()
 {level=1;
  do
  {randLed=random(2,6);
  led[0]=randLed;
  digitalWrite(led[0], HIGH);
  delay(1000); 
  digitalWrite(led[0], LOW);
  delay(1000); 
  level++;
  }
 while (level<2);
    randLed=0;
 do{
  randLed=random(2,6);
  led[1]=randLed;
  digitalWrite(led[0], HIGH);
  delay(1000); 
  digitalWrite(led[0], LOW);
  delay(1000); 
  digitalWrite(led[1], HIGH);
  delay(1000); 
  digitalWrite(led[1], LOW);
  delay(1000); 
   level++;
 }
 while (level<3);
   randLed=0;
 do{
  randLed=random(2,6);
  led[2]=randLed;
  digitalWrite(led[0], HIGH);
  delay(1000); 
  digitalWrite(led[0], LOW);
  delay(1000); 
  digitalWrite(led[1], HIGH);
  delay(1000); 
  digitalWrite(led[1], LOW);
  delay(1000); 
  digitalWrite(led[2], HIGH);
  delay(1000); 
  digitalWrite(led[2], LOW);
  delay(1000); 
   level++;
 }
 while (level<4);
  randLed=0;
  level=0;
  digitalWrite(10, HIGH);
  delay(500);
  digitalWrite(10, LOW);
  delay(100);
}
int randLed;
int led[10];
int level;
void setup()
{
  pinMode(2, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(10,OUTPUT);
  Serial.begin(9600); 
  randomSeed(analogRead(0));
}

void loop()
{ 
  level=1;
  Serial.print(level);
  do
  {randLed=random(2,6);
  led[0]=randLed;
  digitalWrite(led[0], HIGH);
  delay(500); 
  digitalWrite(led[0], LOW);
  delay(500); 
  level++;
  }
 while (level<2);
  Serial.print(level);
  delay(1000);
    randLed=0;
 do{
  randLed=random(2,6);
  led[1]=randLed;
  digitalWrite(led[0], HIGH);
  delay(500); 
  digitalWrite(led[0], LOW);
  delay(500); 
  digitalWrite(led[1], HIGH);
  delay(500); 
  digitalWrite(led[1], LOW);
  delay(500); 
   level++;
 }
 while (level<3);
    Serial.print(level);
    delay(1000);
   randLed=0;
 do{
  randLed=random(2,6);
  led[2]=randLed;
  digitalWrite(led[0], HIGH);
  delay(500); 
  digitalWrite(led[0], LOW);
  delay(500); 
  digitalWrite(led[1], HIGH);
  delay(500); 
  digitalWrite(led[1], LOW);
  delay(500); 
  digitalWrite(led[2], HIGH);
  delay(500); 
  digitalWrite(led[2], LOW);
  delay(500); 
   level++;
 }
 while (level<4);
    Serial.print(level);
    delay(1000);
      randLed=0;
   do{
  randLed=random(2,6);
  led[3]=randLed;
  digitalWrite(led[0], HIGH);
  delay(500); 
  digitalWrite(led[0], LOW);
  delay(500); 
  digitalWrite(led[1], HIGH);
  delay(500); 
  digitalWrite(led[1], LOW);
  delay(500); 
  digitalWrite(led[2], HIGH);
  delay(500); 
  digitalWrite(led[2], LOW);
  delay(500); 
  digitalWrite(led[3], HIGH);
  delay(500); 
  digitalWrite(led[3], LOW);
  delay(500); 
   level++;
 }
 while (level<5);
    Serial.print(level);
    delay(1000);
      randLed=0;
  do{
  randLed=random(2,6);
  led[4]=randLed;
  digitalWrite(led[0], HIGH);
  delay(500); 
  digitalWrite(led[0], LOW);
  delay(500); 
  digitalWrite(led[1], HIGH);
  delay(500); 
  digitalWrite(led[1], LOW);
  delay(500); 
  digitalWrite(led[2], HIGH);
  delay(500); 
  digitalWrite(led[2], LOW);
  delay(500); 
  digitalWrite(led[3], HIGH);
  delay(500); 
  digitalWrite(led[3], LOW);
  delay(500); 
  digitalWrite(led[4], HIGH);
  delay(500); 
  digitalWrite(led[4], LOW);
  delay(500); 
   level++;
   }
   while (level<6);
    Serial.print(level);
    delay(1000);
      randLed=0;
  do{
  randLed=random(2,6);
  led[5]=randLed;
  digitalWrite(led[0], HIGH);
  delay(500); 
  digitalWrite(led[0], LOW);
  delay(500); 
  digitalWrite(led[1], HIGH);
  delay(500); 
  digitalWrite(led[1], LOW);
  delay(500); 
  digitalWrite(led[2], HIGH);
  delay(500); 
  digitalWrite(led[2], LOW);
  delay(500); 
  digitalWrite(led[3], HIGH);
  delay(500); 
  digitalWrite(led[3], LOW);
  delay(500); 
  digitalWrite(led[4], HIGH);
  delay(500); 
  digitalWrite(led[4], LOW);
  delay(500); 
  digitalWrite(led[5], HIGH);
  delay(500); 
  digitalWrite(led[5], LOW);
  delay(500); 
   level++;
   }
   while (level<7);
    Serial.print(level);
      randLed=0;
    delay(1000);
   do{
  randLed=random(2,6);
  led[6]=randLed;
  digitalWrite(led[0], HIGH);
  delay(500); 
  digitalWrite(led[0], LOW);
  delay(500); 
  digitalWrite(led[1], HIGH);
  delay(500); 
  digitalWrite(led[1], LOW);
  delay(500); 
  digitalWrite(led[2], HIGH);
  delay(500); 
  digitalWrite(led[2], LOW);
  delay(500); 
  digitalWrite(led[3], HIGH);
  delay(500); 
  digitalWrite(led[3], LOW);
  delay(500); 
  digitalWrite(led[4], HIGH);
  delay(500); 
  digitalWrite(led[4], LOW);
  delay(500); 
  digitalWrite(led[5], HIGH);
  delay(500); 
  digitalWrite(led[5], LOW);
  delay(500); 
   level++;
   }
   while (level<8);
    Serial.print(level);
      randLed=0;
    delay(1000);
     do{
  randLed=random(2,6);
  led[7]=randLed;
  digitalWrite(led[0], HIGH);
  delay(500); 
  digitalWrite(led[0], LOW);
  delay(500); 
  digitalWrite(led[1], HIGH);
  delay(500); 
  digitalWrite(led[1], LOW);
  delay(500); 
  digitalWrite(led[2], HIGH);
  delay(500); 
  digitalWrite(led[2], LOW);
  delay(500); 
  digitalWrite(led[3], HIGH);
  delay(500); 
  digitalWrite(led[3], LOW);
  delay(500); 
  digitalWrite(led[4], HIGH);
  delay(500); 
  digitalWrite(led[4], LOW);
  delay(500); 
  digitalWrite(led[5], HIGH);
  delay(500); 
  digitalWrite(led[5], LOW);
  delay(500); 
  digitalWrite(led[6], HIGH);
  delay(500); 
  digitalWrite(led[6], LOW);
  delay(500);
   level++;
   }
   while (level<9);
      Serial.print(level);
    randLed=0;
    delay(1000);
      do{
  randLed=random(2,6);
  led[8]=randLed;
  digitalWrite(led[0], HIGH);
  delay(500); 
  digitalWrite(led[0], LOW);
  delay(500); 
  digitalWrite(led[1], HIGH);
  delay(500); 
  digitalWrite(led[1], LOW);
  delay(500); 
  digitalWrite(led[2], HIGH);
  delay(500); 
  digitalWrite(led[2], LOW);
  delay(500); 
  digitalWrite(led[3], HIGH);
  delay(500); 
  digitalWrite(led[3], LOW);
  delay(500); 
  digitalWrite(led[4], HIGH);
  delay(500); 
  digitalWrite(led[4], LOW);
  delay(500); 
  digitalWrite(led[5], HIGH);
  delay(500); 
  digitalWrite(led[5], LOW);
  delay(500); 
  digitalWrite(led[6], HIGH);
  delay(500); 
  digitalWrite(led[6], LOW);
  delay(500);
  digitalWrite(led[7], HIGH);
  delay(500); 
  digitalWrite(led[7], LOW);
  delay(500);
   level++;
   }
   while (level<10);
    Serial.print(level);
        randLed=0;
    delay(1000);
    do{
  randLed=random(2,6);
  led[9]=randLed;
  digitalWrite(led[0], HIGH);
  delay(500); 
  digitalWrite(led[0], LOW);
  delay(500); 
  digitalWrite(led[1], HIGH);
  delay(500); 
  digitalWrite(led[1], LOW);
  delay(500); 
  digitalWrite(led[2], HIGH);
  delay(500); 
  digitalWrite(led[2], LOW);
  delay(500); 
  digitalWrite(led[3], HIGH);
  delay(500); 
  digitalWrite(led[3], LOW);
  delay(500); 
  digitalWrite(led[4], HIGH);
  delay(500); 
  digitalWrite(led[4], LOW);
  delay(500); 
  digitalWrite(led[5], HIGH);
  delay(500); 
  digitalWrite(led[5], LOW);
  delay(500); 
  digitalWrite(led[6], HIGH);
  delay(500); 
  digitalWrite(led[6], LOW);
  delay(500);
  digitalWrite(led[7], HIGH);
  delay(500); 
  digitalWrite(led[7], LOW);
  delay(500);
  digitalWrite(led[8], HIGH);
  delay(500); 
  digitalWrite(led[8], LOW);
  delay(500);
  digitalWrite(led[9], HIGH);
  delay(500); 
  digitalWrite(led[9], LOW);
  delay(500);}
     while (level<11);
    Serial.print(level);
  randLed=0;
  level=0;
  digitalWrite(10, HIGH);
  delay(500);
  digitalWrite(10, LOW);
  delay(100);
}

come on. There has to be a more efficient way to do the same thing.

premobowei:
There has to be a more efficient way to do the same thing.

I'd look into ditching the do{}...while()s in favour of letting loop() do the looping with switch...case for the levels and in favour of millis()-based timing with no delay()s.

@12Stepper. That actually looks like it could work. How would I format that in my code?

premobowei:
@12Stepper. That actually looks like it could work. How would I format that in my code?

Well it's really a total do-over...

Yes I know. I mean how would I format the first round?