🎮 درس 48: بازی سایمون
یک بازی حافظهی کامل — با آرایه، دنباله و سطح.
سطح: پیشرفته · زمان: حدود 18 دقیقه · مفاهیم: آرایه، random، بازی
قدمهای این درس
- قانون بازی
- قدم ۱ — بازی را به چهار تکه بشکن
- چالش: سختترش کن
نمونهای از کد این درس
const int leds[] = {2, 3, 4, 5};
const int btns[] = {8, 9, 10, 11};
const int notes[] = {262, 330, 392, 523};
const int buzzer = 12;
int sequence[50];
int level = 0;
void play(int i) {
digitalWrite(leds[i], HIGH);
tone(buzzer, notes[i]);
delay(350);
digitalWrite(leds[i], LOW);
noTone(buzzer);
delay(120);
}
int waitForPress() {
while (true) {
for (int i = 0; i < 4; i++) {
if (digitalRead(btns[i]) == LOW) {
play(i);
while (digitalRead(btns[i]) == LOW) { } // تا رها شود
return i;
}
}
}
}
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(leds[i], OUTPUT);
pinMode(btns[i], INPUT_PULLUP);
}
randomSeed(analogRead(A0));
Serial.begin(9600);
}
void loop() {
sequence[level] = random(0, 4);
level++;
Serial.print("marhale:");
Serial.println(level);
for (int i = 0; i < level; i++) play(sequence[i]);
for (int i = 0; i < level; i++) {
if (waitForPress() != sequence[i]) {
tone(buzzer, 120, 700);
delay(1200);
level = 0;
Serial.println("bakhti!");
return;
}
}
delay(700);
}
چرا این درس؟
دورهی تینکرکد فارسی تعاملی است: هر قدم را خودت داخل شبیهساز انجام میدهی — مدار واقعی میچینی، کد واقعی اجرا میکنی و نتیجه را همان لحظه میبینی. این درس روی درسهای قبلی ساخته شده، پس اگر تازه شروع کردهای از درس ۱ بیا!
این درس را رایگان در شبیهساز شروع کن 🎓