الدرس 3: عند اكتشاف اللون الأحمر
لا توجد أوامر لإخبار روبوت الواقع الافتراضي بما يجب فعله بمجرد اكتشاف اللون الأحمر. لتجنب الحدود الحمراء، يجب أن ينعكس روبوت الواقع الافتراضي ويدور بمجرد اكتشافه للون الأحمر، كما هو الحال في هذا الفيديو.
-
أضف تعليقًا إلى نهاية الحلقة بينما للإشارة إلى ما يجب أن يحدث عندما يكتشف مستشعر العين السفلية الحد الأحمر. يجب أن يبدو مشروعك الآن كما يلي:
def main (): # ابحث عن مبنى بينما لم يتم اكتشاف الحد الأحمر بينما لم يتم اكتشافه down_eye.detect (أحمر): # هل يكتشف مستشعر المسافة قلعة ؟ if front_distance.found_object (): # Crash castle detected by Distance Sensor drivetrain.drive (FORWARD) else: # Turn to find a castle using the Distance Sensor drivetrain.turn (RIGHT) wait(5, MSEC) # Reverse and turn when red border detected -
أضف drive_for و turn_for للأوامر أسفل التعليق للسماح لروبوت الواقع الافتراضي بالعكس والدوران بمجرد أن يكتشف مستشعر العين السفلية اللون الأحمر.
def main (): # ابحث عن مبنى بينما لم يتم اكتشاف الحد الأحمر بينما لم يتم اكتشافه down_eye.detect (أحمر): # هل يكتشف مستشعر المسافة قلعة ؟ if front_distance.found_object (): # Crash castle detected by Distance Sensor drivetrain.drive ( FORWARD) else: # Turn to find a castle using the Distance Sensor drivetrain.turn (RIGHT) wait(5, MSEC) # Reverse and turn when red border detected drivetrain.drive_for (REVERSE, 300, MM) drivetrain.turn_for(RIGHT, 90, DEGREES) - افتح ملعب Dynamic Castle Crasher إذا لم يكن مفتوحًا بالفعل، وقم بتشغيل المشروع. هل يتصرف روبوت الواقع الافتراضي كما كنت تنوي ؟
- عند تشغيل هذا المشروع، هناك شرطان يتم التحقق منهما. الحالة الأولى هي حالة مستشعر العين
السفلية الذي يكتشف اللون الأحمر داخل الحلقة بينما لاحظ أن
تدفق المشروع ينتقل إلى الحالة التالية لجسم يتم اكتشافه فقط إذا لم يرَ
مستشعر العين السفلية اللون الأحمر. إذا اكتشف مستشعر العين السفلي اللون الأحمر، فإن تدفق
المشروع يتخطى عبارة if else ويقفز إلى القيادة في الاتجاه
المعاكس والانعطاف.

- الشرط الثاني الذي يتم التحقق منه هو عبارة if else.
في حين أن مستشعر العين السفلية لا يكتشف اللون الأحمر، سيستمر المشروع في
الحلقة بينما للتحقق من حالة مستشعر المسافة. سيستخدم
روبوت الواقع الافتراضي البيانات من مستشعر المسافة لاتخاذ قرار بالقيادة للأمام أو
الانعطاف يمينًا.

-
ومع ذلك، بمجرد أن يكتشف مستشعر العين السفلية اللون الأحمر، سيقود روبوت الواقع الافتراضي في الاتجاه المعاكس، ثم يتحول، ثم يتوقف لأن هذا هو نهاية تدفق المشروع. لا توجد حلقة تستخدم لتكرار السلوكيات مرة أخرى.

إضافة حلقة لا نهائية while
-
هناك حاجة إلى حلقة لا نهائية حتى تتكرر السلوكيات في حلقة. اسحب أو اكتب إلى بينما حلقة في الجزء العلوي من المشروع، واضبط الشرط على True لإنشاء حلقة لا نهائية. بعد ذلك قم بنسخ ولصق الكود السابق داخل الحلقة اللانهائية while . تأكد من أن الأوامر مزودة بمسافة بادئة بشكل صحيح تحت الرؤوس الصحيحة، وإلا فقد لا يعمل المشروع كما هو متوقع. يجب أن يبدو مشروعك الآن كما يلي:
def main (): while True: # ابحث عن مبنى بينما لم يتم اكتشاف الحد الأحمر بينما لم يتم اكتشافه down_eye.detect (RED): # هل يكتشف مستشعر المسافة قلعة ؟ if front_distance.found_object (): # Crash castle detected by Distance Sensor drivetrain.drive ( FORWARD) else: # Turn to find a castle using the Distance Sensor drivetrain.turn (RIGHT) wait(5, MSEC) # Reverse and turn when red border detected drivetrain.drive_for (REVERSE, 300, MM) drivetrain.turn_for(RIGHT, 90, DEGREES) - افتح ملعب Dynamic Castle Crasher إذا لم يكن مفتوحًا بالفعل، وقم بتشغيل المشروع. هل يتصرف روبوت الواقع الافتراضي كما تريد ؟
-
عند تشغيل هذا المشروع، سيقود روبوت الواقع الافتراضي نحو قلعة مكتشفة وينعطف يمينًا إذا لم يتم الإبلاغ عن أي قلاع. بمجرد أن يكتشف مستشعر العين السفلية اللون الأحمر، يتحرك روبوت الواقع الافتراضي في الاتجاه المعاكس، ويدور، ويستمر في القيادة نحو قلعة أخرى.
