Need help with the Simon project

Need help with the Simon project
0

#1

I’m pretty close to being finished with the Simon game, but can’t figure out why all the buttons go off at the same time: https://codepen.io/lalov1/full/MvgvxY/


#2

The problem is in the following:

  for(let i=0; i<=BUTTONS_RANDOM.length; i++){
    interval*=i;
    console.log('interval = ' + interval); // display interval's value during each iteration
    if(BUTTONS_RANDOM[i]===1){
      setTimeout(playGreen, interval);
    }else if(BUTTONS_RANDOM[i]===2){
      setTimeout(playRed, interval);
    }else if(BUTTONS_RANDOM[i]===3){
      setTimeout(playYellow, interval);
    }else if(BUTTONS_RANDOM[i]===4){
      setTimeout(playBlue, interval);
    }else{
      
    }
  }

interval is equal to 0 during each iteration of the loop, because i starts at 0 and during the first iteration of the for loop interval gets assigned the value of interval * i. Since 1000 * 0 = 0, all other iterations start with interval being equal to 0, so it will always be 0.

I am blurring out a possible solution below in case you can not figure out a work around:

// remove the existing let interval = 1000 declaration before the for loop and use the following
  for (let i=0; i<=BUTTONS_RANDOM.length; i++){
    let interval = (i+1)*1000; // this avoids interval being set to zero iteration after iteration
    if(BUTTONS_RANDOM[i]===1){
      setTimeout(playGreen, interval);
    }else if(BUTTONS_RANDOM[i]===2){
      setTimeout(playRed, interval);
    }else if(BUTTONS_RANDOM[i]===3){
      setTimeout(playYellow, interval);
    }else if(BUTTONS_RANDOM[i]===4){
      setTimeout(playBlue, interval);
    }else{
      
    }
  }

#3

Thanks for your help. Now I’m having trouble with it not turning a different color when it is the same color twice and when the user misses one it doesn’t restart. Any tips?