سؤال 1: يحدد المقطع البرمجي لعنصر البرمجة الجديد Corrections of route حركة الروبوت. أضف الجزء المفقود من المقطع البرمجي ليحطم روبوت الواقع الافتراضي القلعة، حتى يكتشف مستشعر العين السفلية اللون الأحمر، يجب على روبوت الواقع الافتراضي تنفيذ الخطوات الآتية: > إذا اكتشف مستشعر المسافة شيئًا ما أو إذا تم الضغط على مستشعر الاصطدام الأيسر، يجب أن يتحرك الروبوت إلى الأمام. > في حالة الضغط على مستشعر الاصطدام الأيسر فقط، أثناء تحرك الروبوت إلى الأمام، يجب أن ينعطف الروبوت إلى اليسار. > إذا لم يكتشف مستشعر المسافة شيئًا أو إذا لم يتم الضغط على مستشعر الاصطدام الأيسر، يجب أن ينعطف الروبوت إلى اليمين.
الإجابة: تخييري
خطوات الحل:
- **الهدف:** كتابة مقطع برمجي يسمح للروبوت بتحطيم القلعة بناءً على معطيات المستشعرات.
- | المستشعر | الحالة | الإجراء | |---|---|---| | مستشعر المسافة | يكتشف شيئًا | تحرك للأمام | | مستشعر الاصطدام الأيسر | مضغوط | تحرك للأمام | | مستشعر الاصطدام الأيسر | مضغوط فقط | انعطف لليسار (أثناء الحركة للأمام) | | مستشعر المسافة | لا يكتشف شيئًا | انعطف لليمين | | مستشعر الاصطدام الأيسر | غير مضغوط | انعطف لليمين |
- **المبادئ البرمجية المستخدمة:** 1. **الشروط (If/Else):** لتحديد الإجراء بناءً على حالة المستشعرات. 2. **الحلقات (Loops):** لتكرار الفحص واتخاذ الإجراءات بشكل مستمر.
- **خطوات الحل:** 1. ابدأ بحلقة تكرار مستمرة (While loop) لضمان استمرار الروبوت في الحركة والتفاعل مع البيئة. 2. داخل الحلقة، استخدم عبارة شرطية (If) للتحقق مما إذا كان مستشعر المسافة يكتشف شيئًا أو إذا كان مستشعر الاصطدام الأيسر مضغوطًا. * إذا كان أي من الشرطين صحيحًا، قم بتحريك الروبوت إلى الأمام. 3. داخل نفس عبارة (If)، أضف شرطًا فرعيًا (Nested If) للتحقق مما إذا كان مستشعر الاصطدام الأيسر مضغوطًا *فقط*. * إذا كان هذا الشرط صحيحًا، قم بتوجيه الروبوت للانعطاف إلى اليسار أثناء الحركة للأمام. 4. استخدم عبارة (Else) للتعامل مع الحالة التي لا يكتشف فيها مستشعر المسافة شيئًا ولا يكون مستشعر الاصطدام الأيسر مضغوطًا. * في هذه الحالة، قم بتوجيه الروبوت للانعطاف إلى اليمين.
- > **ملاحظة:** يجب تضمين هذه الشروط داخل حلقة تكرار لضمان استمرار الروبوت في الاستجابة لتغيرات البيئة.
- **الحل المقترح (وصف برمجي):** While (True): If (distance_sensor.detects_something() OR left_bumper.is_pressed()): move_forward() If (left_bumper.is_pressed() AND NOT distance_sensor.detects_something()): turn_left() Else: turn_right()
- **الخلاصة:** المقطع البرمجي يوجه الروبوت للتحرك بناءً على قراءات مستشعرات المسافة والاصطدام، مما يمكنه من تحطيم القلعة وتجنب العوائق.