🎮 درس 48: بازی سایمون

یک بازی حافظه‌ی کامل — با آرایه، دنباله و سطح.

سطح: پیشرفته · زمان: حدود 18 دقیقه · مفاهیم: آرایه، random، بازی

قدم‌های این درس

  1. قانون بازی
  2. قدم ۱ — بازی را به چهار تکه بشکن
  3. چالش: سخت‌ترش کن

نمونه‌ای از کد این درس

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);
}

چرا این درس؟

دوره‌ی تینکرکد فارسی تعاملی است: هر قدم را خودت داخل شبیه‌ساز انجام می‌دهی — مدار واقعی می‌چینی، کد واقعی اجرا می‌کنی و نتیجه را همان لحظه می‌بینی. این درس روی درس‌های قبلی ساخته شده، پس اگر تازه شروع کرده‌ای از درس ۱ بیا!

این درس را رایگان در شبیه‌ساز شروع کن 🎓

درس‌های دیگر دوره

🕐

درس 47: ساعت دیجیتال

⚡

درس 49: مسابقه‌ی دو نفره