الدرس 4: تدفق المشروع مع الحلقات المتداخلة
جمع القرصين التاليين
-
الآن بعد أن واجه روبوت الواقع الافتراضي الأقراص الحمراء، سيحتاج روبوت الواقع الافتراضي إلى تكرار نفس السلوكيات التي تم استخدامها لجمع القرص الأزرق، من أجل التقاط القرص الأحمر وتحريكه. سلوكيات القيادة للأمام لالتقاط القرص والاستدارة والعودة إلى نفس الهدف الملون لإسقاط القرص.
-
بمجرد نقل القرص الأحمر الأول، سيحتاج روبوت الواقع الافتراضي بعد ذلك إلى القيادة إلى الهدف الأخضر وتنفيذ نفس الإجراءات التي تم استخدامها لتحريك القرص الأزرق والأحمر، لتحريك القرص الأخضر الأول.
- لتكرار السلوكيات عدة مرات، يمكن استخدام حلقة لـ.
-
أضف حلقة لـ إلى أعلى المشروع، فوق التعليق الأول، واضبط معلمة الدالة ذات النطاق على '3'. تأكد من أن الحلقة لـ مسننة داخل التعريف الرئيسي.
def main (): for repeat_count in range(3): انتظر(5، مللي ثانية)
-
لنسخ الكود في الحلقة لـ ، يجب الانتباه جيدًا إلى المسافة البادئة. أولاً، أضف مسافة قبل الأمر wait ، حتى تبدو الحلقة بهذا الشكل:
def main (): for repeat_count in range(3): انتظر(5، مللي ثانية)
- بعد ذلك، حدد الأوامر التي تريد وضعها في الحلقة لـ ، ثم انسخها
وألصقها أعلى الأمر wait . لاحظ أن المسافة البادئة
ستكون غير صحيحة بعد النسخ واللصق ببساطة. تم كسر خط المؤشر الرمادي
للحلقة لـ ، وتم فصله عن أمر
الانتظار . هذه إشارة مرئية لن ينفذها مشروعك على النحو المنشود.
-
قم بتحديد الأوامر الموجودة داخل الحلقة لـ ، واستخدم "Tab" لوضع مسافة بادئة صحيحة للأوامر الموجودة داخل الحلقة. عند وضع المسافة البادئة بشكل صحيح، يجب أن يربط خط المؤشر الرمادي بين الحلقة لـ والأمر wait لإظهار حدود الحلقة الخارجية. عند الانتهاء، يجب أن يبدو مشروعك كما يلي:
def main (): for repeat_count in range(3): # 1. قم بالقيادة إلى القرص باستخدام مستشعر العين السفلي بينما لا يكون down_eye.near_object (): drivetrain.drive(للأمام) انتظر(5، مللي ثانية )drivetrain.stop () # 2. التقط مغناطيس القرص. قم بتنشيط (تعزيز) رقم 3. القيادة إلى المرمى باستخدام مستشعر المسافة drivetrain.turn_to_heading(180 درجة) بينما front_distance.get_distance(MM) > 200: drivetrain.drive(للأمام) انتظر(5 مللي ثانية ). stop ()# 4. إسقاط القرص في الهدف magnet.energize(إسقاط) drivetrain.drive_for(عكس، 100، مم) # 5. انتقل إلى الهدف التالي drivetrain.turn_to_heading (90 درجة) drivetrain.drive_for ( إلى الأمام، 800، مم) # 6. انتقل إلى الأقراص drivetrain.turn_to_heading(0، درجة) انتظر(5، مللي ثانية)
- شاهد الفيديو أدناه لمعرفة كيفية نقل الأوامر وضبط المسافة البادئة كما هو موضح أعلاه. في مقطع الفيديو، يتم تمييز أقسام التعليقات الستة للمشروع، ويتم فتح قائمة السياق. يتم تحديد خيار "القص"، ثم يتم وضع المؤشر أسفل أمر الحلقة. يتم فتح قائمة السياق مرة أخرى، ويتم تحديد "لصق". ثم تصبح الأوامر داخل الحلقة لـ ، ولكن مسافتها البادئة غير صحيحة. يتم تمييز أقسام التعليقات الستة مرة أخرى ويتم الضغط على "Tab" على لوحة المفاتيح لإزاحة المشروع بشكل صحيح داخل الحلقة.
- افتح Disk Mover Playground إذا لم يكن مفتوحًا بالفعل، وقم بتشغيل المشروع.
-
عند تشغيل هذا المشروع، يلتقط روبوت الواقع الافتراضي ويسقط قرصًا واحدًا من كل لون في هدفه الملون المقابل.
لمعلوماتك
لاحظ أن روبوت الواقع الافتراضي استمر في القيادة إلى الحائط. هذا السلوك متوقع لأن المشروع أوعز إلى روبوت الواقع الافتراضي بالانعطاف يمينًا والقيادة نحو الهدف التالي، ثلاث مرات. المرة الأولى هي القيادة من الأزرق إلى الأحمر. والثاني من الأحمر إلى الأخضر، والثالث من الأخضر إلى الجدار، حيث لا يوجد هدف ملون آخر. أوقف المشروع بمجرد أن يصطدم روبوت الواقع الافتراضي بالحائط. يمكن تحسين المشروع بحيث يتوقف روبوت الواقع الافتراضي بعد التقاطه وتحريك القرص الأخضر، ولكن هذا من شأنه أن يزيد من التعقيد العام للمشروع.