단기기억 게임 만드는 중.
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);
}
}
}
}
}
치매노인을위한 단기기억력 증가 솔루션 이런건가 ㅋㅋㅋㅋ