⚡ بازی سرعت عمل — چقدر سریع واکنش نشان میدهی؟
یک بازی ساده که مفهوم اندازهگیری زمان را عالی یاد میدهد: چراغ روشن میشود، تو دکمه را میزنی، و آردوینو میگوید چند میلیثانیه طول کشید.
منطق بازی
- یک مدت تصادفی صبر کن (تا بازیکن نتواند حدس بزند).
- چراغ را روشن کن و زمان را با
millis()ثبت کن. - منتظر دکمه بمان.
- اختلاف دو زمان، سرعت عمل است.
کد
const int led = 13, button = 2;
unsigned long best = 99999;
void setup() {
pinMode(led, OUTPUT);
pinMode(button, INPUT_PULLUP);
Serial.begin(9600);
randomSeed(analogRead(A0));
}
void loop() {
Serial.println("Amade bash...");
digitalWrite(led, LOW);
delay(random(2000, 6000)); // انتظار تصادفی
// تقلب: اگر همین حالا دکمه را نگه داشته باشد
if (digitalRead(button) == LOW) {
Serial.println("Taghallob! Sabr kon.");
delay(2000);
return;
}
digitalWrite(led, HIGH);
unsigned long start = millis();
while (digitalRead(button) == HIGH) { } // منتظر فشار
unsigned long ms = millis() - start;
digitalWrite(led, LOW);
Serial.print("Sorat: ");
Serial.print(ms);
Serial.println(" ms");
if (ms < best) {
best = ms;
Serial.println("Rekord jadid!");
}
delay(2000);
}
تشخیص تقلب
بدون آن بازیکن میتواند دکمه را از قبل نگه دارد و همیشه صفر میلیثانیه بگیرد. یک بررسی ساده قبل از روشنکردن چراغ، بازی را منصفانه میکند — و به بچهها یاد میدهد که به ورودی کاربر اعتماد نکن.
عددها چه معنی دارند؟
سرعت عمل یک انسان معمولی حدود ۲۵۰ میلیثانیه است. زیر ۲۰۰ خیلی خوب است و زیر ۱۵۰ تقریباً غیرممکن — اگر چنین عددی دیدی، احتمالاً زودتر زدهای.
بازی سرعت عمل را بساز ⚡