حسگر «جلو باز» در روبی: راه هست، برو
دوستانهترین حسگر ربات روبی: «جلوی من باز است؟». جواب بله یعنی روبی میتواند با خیال راحت قدم بردارد.
حسگر جلو باز چه کار میکند؟
frontIsClear وقتی بله است که خانهی جلوی روبی داخل نقشه باشد و نه مانع سفت داشته باشد و نه آب. یعنی دقیقا همان خانههایی که دستور جلو میتواند به آنها برود. leftIsClear و rightIsClear همین را برای سمت چپ و راست روبی میپرسند.
فرق مهمش با حسگر دیوار در آب است: جلوی آب، frontIsWall خیر میگوید اما frontIsClear هم خیر میگوید؛ چون روبی نمیتواند وارد آب شود. این حسگر فقط نوع زمین را نگاه میکند و به آیتمها یا مینها کاری ندارد.
شکل بلوکی و شکل کد
در فهرست کشویی بلوکها با اسمهای جلو_باز، راست_باز و چپ_باز آمده و جلو_باز پیشفرض بلوک «♾️ تا_وقتی» است.
- ✅ جلو: frontIsClear یا جلو_باز
- ✅ چپ: leftIsClear یا چپ_باز
- ✅ راست: rightIsClear یا راست_باز
یک مثال کوچک با ربات روبی
کوتاهترین برنامه برای رفتن تا انتهای یک راهرو: while frontIsClear: forward. روبی تا وقتی راه باز است جلو میرود و درست جلوی دیوار یا آب میایستد. به فارسی: تا_وقتی جلو_باز: جلو.
برای پیچیدن خودکار در راهروی L شکل: بعد از حلقه بنویسید if rightIsClear: right و دوباره همان حلقه را تکرار کنید.
حلقهی while frontIsClear: forward خودش هم امن است؛ اگر روبی از اول جلوی دیوار باشد، بدنه حتی یک بار اجرا نمیشود و برنامه بدون برخورد به دستور بعدی میرود. این یعنی همان یک خط روی راهروی صفرخانهای تا بیستخانهای درست کار میکند.
اشتباههای رایج
باز بودن راه یعنی امکان رفتن، نه امن بودن. در بازی مینیاب، خانهای که مین دارد هم باز حساب میشود.
- ✅ یکی گرفتن frontIsClear با not frontIsWall، در حالی که جلوی آب فرق دارند
- ✅ جا انداختن forward در بدنهی while
- ✅ استفاده از این حسگر برای پیدا کردن مین بهجای frontIsMine
در کدام درسها و لیگها استفاده میشود؟
این حسگر همراه حلقهی شرطی در درس ۱۸ «تا وقتی برس» و درس ۲۱ «هزارتو» بسیار کاربرد دارد و در تمرینهای لیگ ۲، لیگ ۳ و لیگ ۴ بارها دیده میشود.
نکته برای والدین و معلم
از کودک بپرسید «چرا frontIsClear از شمردن خانهها بهتر است؟». جواب، یعنی کار کردن روی هر راهرویی با هر طولی، همان معنای الگوریتم عمومی است.
سوالهای پرتکرار
frontIsClear جلوی آب چه میگوید؟
خیر؛ چون روبی نمیتواند وارد آب شود.
اسم فارسی frontIsClear چیست؟
جلو_باز؛ برای چپ و راست هم چپ_باز و راست_باز.
آیا آیتم روی خانه راه را میبندد؟
نه. این حسگر فقط نوع زمین را بررسی میکند.