📍 دستورهای روبی

بامپر و موقعیت در روبی: حسگرهای ربات واقعی

ربات‌های واقعی ضربه‌گیر و مختصات دارند. ربات روبی هم در حالت پیشرفته همین حسگرها را دارد.

این حسگرها چه کار می‌کنند؟

bumperFront اگر جلوی روبی مانع سفت یا لبه‌ی نقشه باشد عدد ۱ و وگرنه ۰ می‌دهد؛ مثل یک ضربه‌گیر که به دیوار چسبیده. bumper چیز دیگری است: درست بعد از اینکه یک حرکت به دیوار، آب یا لبه‌ی نقشه خورد بله می‌شود و بعد از اولین حرکت موفق دوباره خیر می‌شود. یعنی bumper می‌پرسد «همین الان به جایی خوردم؟».

positionX و positionY جای روبی را با دو عدد می‌دهند. مبدأ گوشه‌ی پایین و چپ نقشه است؛ X به سمت راست و Y به سمت بالا زیاد می‌شود، مثل نمودار ریاضی.

شکل بلوکی و شکل کد

این حسگرها مخصوص حالت کد هستند و در آزمایشگاه آزاد روبی در پنل زنده‌ی حسگرها، کنار فاصله‌سنج‌ها و حسگر رنگ، نمایش داده می‌شوند.

  • ✅ ضربه‌گیر جلو: bumperFront با مقدار ۰ یا ۱
  • ✅ برخورد قبلی: bumper یا bumped
  • ✅ موقعیت: positionX و positionY
  • ✅ مثال: if bumper == 1: left

یک مثال کوچک با ربات روبی

ربات جاروبرقی ساده: repeat(30): و داخلش forward و بعد if bumper == 1: right. روبی جلو می‌رود و هر بار به چیزی بخورد، می‌چرخد. یا برای رفتن تا ستون چهارم نقشه: while positionX < 4: forward، به شرطی که روبی رو به راست باشد.

در هر دو مثال، روبی بدون شمردن خانه‌ها و فقط با خواندن حسگرها تصمیم می‌گیرد؛ همان کاری که ربات‌های واقعی با ضربه‌گیر و مختصات انجام می‌دهند.

اشتباه‌های رایج

bumperFront قبل از حرکت چک می‌کند و bumper بعد از حرکت؛ قاطی کردن این دو رایج‌ترین خطاست.

  • ✅ انتظار اینکه bumperFront آب را هم تشخیص دهد
  • ✅ فکر کردن به اینکه Y مثل صفحه به پایین زیاد می‌شود
  • ✅ پرسیدن bumper قبل از اینکه حرکتی انجام شده باشد

در کدام درس‌ها و لیگ‌ها استفاده می‌شود؟

این حسگرها همراه فاصله‌سنج در درس ۲۰ و برای حل مسئله در درس ۲۱ «هزارتو» و پروژه‌ی درس ۲۳ کاربرد دارند. positionX و positionY در تمرین‌های لیگ ۳ و لیگ ۴ هم استفاده شده‌اند.

نکته برای والدین و معلم

positionX و positionY فرصت خوبی برای وصل کردن برنامه‌نویسی به محور مختصات کلاس ریاضی است. از نوجوان بخواهید قبل از اجرا مختصات مقصد را روی کاغذ بنویسد.

سوال‌های پرتکرار

فرق bumperFront و bumper چیست؟

bumperFront می‌گوید الان جلوی روبی مانع هست؛ bumper می‌گوید حرکت قبلی به مانع خورده است.

مبدأ positionX و positionY کجاست؟

گوشه‌ی پایین و چپ نقشه.

آیا این حسگرها در بلوک‌ها هستند؟

نه، در حالت کد و آزمایشگاه آزاد استفاده می‌شوند.