단기기억 게임 만드는 중.


led 3개랑 버튼 3개 있고


led 깜빡이는 순서대로 버튼 누르는 게임임.


틀리면 빨간 등 들어오고, 맞추면 녹색등 들어옴


근데 코딩 잘 한거 같은데 게임 시작하자마자 자꾸 틀렸다고 표시됨. 랜덤 위치로 led 불 깜빡이는건 되는데 led 깜빡이자마자 숨쉴틈도 안주고 틀렸다고 표시해버림.


지금 4시간째 붙잡고 보는데 안보인다. if문 어디서 꼬인건가?


#define MAX 10 //난이도설정

int sLed[MAX];

int nLed = 0;

int tLed = 0;


int led_r = 4;

int led_g = 5;

int led_0 = 6;

int led_1 = 7;

int led_2 = 8;


int button [3] = {11, 12, 13};


void light(int n)//빛들어오게하는함수{

  digitalWrite(n, HIGH);

  delay(500);

  digitalWrite(n, LOW);

  delay(500);

}


void seq(int n)//맞추면 다음난이도로 가는 함수{

  for(int i=0; i<=n; i++){

    if(sLed[i]==0)

      light(led_0);

    else if(sLed[i]==1)

      light(led_1);

    else if(sLed[i]==2)

      light(led_2);

  }

}


void setup(){

  pinMode(button[0], INPUT_PULLUP);

  pinMode(button[1], INPUT_PULLUP);

  pinMode(button[2], INPUT_PULLUP);

  pinMode(led_r, OUTPUT);

  pinMode(led_g, OUTPUT);

  pinMode(led_0, OUTPUT);

  pinMode(led_1, OUTPUT);

  pinMode(led_2, OUTPUT);

  

  randomSeed(analogRead(A0));

  

  for(int i=0; i<MAX; i++){

    sLed[i] = random(0, 3);

    }

    seq(nLed);

}


void loop (){

int btn;


if(

  (digitalRead(button[0]) == LOW || digitalRead(button[1]) == LOW) || (digitalRead(button[1]) == LOW || digitalRead(button[2]) == LOW)

  )

  {

 

if(digitalRead(button[0]) == LOW){

  btn = 0;

  light(led_0);

  }

else if(digitalRead(button[1])== LOW){

  btn = 1;

  light(led_1);

  }

else if(digitalRead(button[2]) == LOW){

  btn = 2;

  light(led_2);

  }

}


if(btn != sLed[tLed]){

  while(true){

    light(led_r);

    delay(1000);

  }

} else {

  if(tLed == nLed){

    nLed++;


    if (nLed==MAX){

      while(true) {

        light(led_g);

        delay(1000);

      }

    }

  }

}

}