⚡ درس 49: مسابقهی دو نفره
چه کسی سریعتر است؟ — و چطور بازی را منصفانه کنیم.
سطح: متوسط · زمان: حدود 13 دقیقه · مفاهیم: millis، انصاف، بازی
قدمهای این درس
- ایده
- قدم ۱ — سه قانون انصاف
- چالش: بهترین از پنج
نمونهای از کد این درس
const int led = 13, p1 = 2, p2 = 3, buzzer = 8;
void setup() {
pinMode(led, OUTPUT);
pinMode(p1, INPUT_PULLUP);
pinMode(p2, INPUT_PULLUP);
pinMode(buzzer, OUTPUT);
randomSeed(analogRead(A0));
Serial.begin(9600);
}
void loop() {
Serial.println("Amade...");
digitalWrite(led, LOW);
delay(random(2000, 6000));
// قانون ۲: کسی زودتر زده؟
if (digitalRead(p1) == LOW || digitalRead(p2) == LOW) {
Serial.println("Zood zadi! Bakhti.");
tone(buzzer, 150, 500);
delay(2000);
return;
}
digitalWrite(led, HIGH);
unsigned long start = millis();
// قانون ۳: هر دو در یک حلقه
while (true) {
bool a = (digitalRead(p1) == LOW);
bool b = (digitalRead(p2) == LOW);
if (a || b) {
unsigned long ms = millis() - start;
digitalWrite(led, LOW);
Serial.print(a ? "Bazikon 1" : "Bazikon 2");
Serial.print(" bord ba ");
Serial.print(ms);
Serial.println(" ms");
tone(buzzer, 1200, 200);
break;
}
}
delay(2500);
}
چرا این درس؟
دورهی تینکرکد فارسی تعاملی است: هر قدم را خودت داخل شبیهساز انجام میدهی — مدار واقعی میچینی، کد واقعی اجرا میکنی و نتیجه را همان لحظه میبینی. این درس روی درسهای قبلی ساخته شده، پس اگر تازه شروع کردهای از درس ۱ بیا!
این درس را رایگان در شبیهساز شروع کن 🎓