الدرس 2: بناء المشروع واختباره
الاستمرار في بناء المشروع
-
الآن يجب تعيين شرط العبارة if else . لاستخدام مستشعر المسافة لاكتشاف القلاع، يمكن استخدام الأمر found_object . أضف الأمر found_object إلى الشرط. يجب أن يبدو مشروعك الآن كما يلي:
def main (): # هل يكتشف مستشعر المسافة قلعة ؟ if front_distance.found_object(): # تحطم القلعة المكتشفة بواسطة ممر مستشعر المسافة آخر: # استدر للعثور على قلعة باستخدام ممر مستشعر المسافة -
إذا عثر مستشعر المسافة على شيء ما، فيجب أن يتحرك روبوت الواقع الافتراضي للأمام لضرب القلعة. أضف الأمر drive إلى فرع "if" من العبارة if else ، واضبط المعلمة لتحريك روبوت الواقع الافتراضي إلى الأمام. (يجب أن يحل هذا الأمر محل "النجاح").
def main (): # هل يكتشف مستشعر المسافة قلعة ؟ if front_distance.found_object (): # تحطم القلعة المكتشفة بواسطة مجموعة نقل الحركة لمستشعر المسافة (للأمام) else: # انعطف للعثور على قلعة باستخدام ممر مستشعر المسافة -
عندما يبلغ الأمر found_object عن False، سيتم تشغيل فرع "else"، سيحتاج روبوت الواقع الافتراضي إلى الدوران للعثور على قلعة في ساحة اللعب. أضف الأمر turn داخل فرع "else" ، واضبط المعلمات لتحويل روبوت الواقع الافتراضي إلى اليمين.
def main (): # هل يكتشف مستشعر المسافة قلعة ؟ إذا كانتfront_distance.found_object (): # تحطم القلعة المكتشفة بواسطة مجموعة نقل الحركة لمستشعر المسافة (للأمام) آخر: # انعطف للعثور على قلعة باستخدام مجموعة نقل الحركة لمستشعر المسافة (لليمين)
لمعلوماتك
يعمل فرع "آخر" من عبارة if else فقط في مشروع كجزء من
عبارة if else. بينما يمكنك الحصول على
عبارة if قائمة بذاتها، لا توجد عبارة "else" في
VEXcode VR Python. يتم تشغيل الفرع "آخر" عندما لا يتم استيفاء شرط الفرع "إذا". بدون
شرط محدد (فرع "if ")، لن يتم تشغيل فرع" else "أبدًا. 
إضافة حلقة واختبار المشروع
- قبل اختبار المشروع، يجب إضافة أمر آخر. إذا
كانت العبارات الأخرى ستتحقق من الشرط مرة واحدة فقط قبل الانتقال
إلى الأمر التالي خارج العبارة. في الوحدة 7، تمت إضافة حلقة لا
نهائية بينما إلى المشروع لتوجيه روبوت الواقع الافتراضي
للتحقق بشكل متكرر من حالة مستشعر العين السفلية. لتتأكد من فحص حالة مستشعر المسافة بشكل
متكرر ، اسحب أو اكتب حلقة لا نهائية while ، ثم انسخ
العبارة if else داخل الحلقة
اللانهائية while. يجب أن يبدو مشروعك الآن كما يلي:
-
تذكر أن تضع في اعتبارك المسافة البادئة عند نسخ الأوامر ولصقها في حلقة، بحيث يعمل المشروع على النحو المنشود عند تشغيله.
def main (): while True: # هل يكتشف مستشعر المسافة قلعة ؟ إذا front_distance.found_object (): # تحطم القلعة التي تم اكتشافها بواسطة مجموعة نقل الحركة لمستشعر المسافة (للأمام) آخر: # استدر للعثور على قلعة باستخدام مجموعة نقل الحركة لمستشعر المسافة. استدر (لليمين) انتظر(5، مللي ثانية)
-
- افتح نافذة الملعب إذا لم تكن مفتوحة بالفعل. تأكد من
فتح Dynamic Castle Crasher
Playground ، ثم قم بتشغيل المشروع.

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

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

- أثناء تشغيل المشروع، قد يدفع روبوت الواقع الافتراضي قطعة قلعة على طول الطريق إلى الحافة ويسقط من الملعب. يرجع ذلك إلى أن الأمر found_object لا يزال يبلغ عن وجود كائن أمام روبوت الواقع الافتراضي. عندما يقدم هذا الأمر تقريرًا صحيحًا، يتحرك روبوت الواقع الافتراضي إلى الأمام، مما يؤدي إلى سقوط روبوت الواقع الافتراضي من الملعب.
تدفق المشروع مع عبارة if else
يتم استخدام عبارة if else حتى يتمكن روبوت الواقع الافتراضي من اتخاذ قرار. إذا كان الشرط المنطقي صحيحًا، فسيتم تشغيل الأوامر داخل فرع "if". إذا كان الشرط المنطقي هو False، فسيتم تشغيل الأوامر داخل الفرع "else".
على سبيل المثال، في هذا التكرار من Dynamic Castle Crasher Playground، عندما
يبدأ المشروع، يكتشف مستشعر المسافة كائنًا - حالة
الأمر found_object عن
True. الآن سيتم تشغيل فرع "if" من المشروع، وسيتحرك روبوت الواقع
الافتراضي للأمام. سيتخطى روبوت الواقع الافتراضي فرع
"else" من المشروع.
- لاحظ أنه يتم أيضًا الإبلاغ عن بيانات مستشعر المسافة في لوحة المعلومات. عند اكتشاف كائن، سيتم عرض قيمة المسافة.
ومع ذلك، في هذا التكرار من ملعب Dynamic Castle Crasher، عندما يتم بدء المشروع، لا يكتشف
مستشعر المسافة أي كائن - حالة الأمر found_object
تبلغ False. الآن سيتخطى روبوت الواقع الافتراضي فرع "if" من المشروع،
وسيتم تشغيل فرع "else" من المشروع، لذلك سوف يستدير روبوت الواقع الافتراضي إلى
اليمين.
- لاحظ أنه تم الإبلاغ عن قيمة مستشعر المسافة في لوحة المعلومات على أنها > 3000 مم. يمكن لمستشعر المسافة اكتشاف الأجسام ضمن نطاق 3000 ملليمتر (مم)، لذلك عندما لا يتم اكتشاف جسم ما، يتم الإبلاغ عن القيمة على أنها أكبر من>() 3000 مم.
Because the if else statement is inside of an infinite
while loop, the project loops back to the top of the
infinite while loop to check the condition of the if else statement repeatedly. ستستمر هذه الحلقة إلى الأبد، مما يأمر
روبوت الواقع الافتراضي بالتحقق بشكل مستمر من الشرط if else مئات المرات في الثانية.
- لاحظ أن الأوامر drive و turn الموجودة داخل العبارة if else هي أوامر غير انتظار. الأوامر غير المنتظرة لا توقف تدفق المشروع أثناء تشغيله. سيستمر السلوك غير المنتظر الذي يتم تنفيذه في عبارة if else (مثل "القيادة للأمام إذا تم اكتشاف كائن ") أثناء التحقق من الحالة، ولن يتغير إلا عندما تتغير الحالة.
لمعلوماتك
يتم استخدام العبارة if else للتأكد من تشغيل فرع واحد فقط في المشروع عند التحقق من الشرط. يمكن أن تكون حالة أو شرط واحد فقط صحيحًا في أي وقت. وهذا يجعل المشروع أكثر كفاءة.

قارن المشروع الحالي بالمشروع الذي تم إنشاؤه في الوحدة 7. يستخدم مشروع الوحدة 7 أربع عبارات if

عند تشغيل مشروع يحتوي على عدة عبارات if، من الممكن أن تقوم عدة شروط بالإبلاغ عن True (أو False) أثناء تشغيل المشروع للأوامر في حلقة while اللانهائية. قد تتسبب مثل هذه التعارضات في توقف تشغيل المشروع أو تشغيله بشكل أبطأ.
بعبارة أخرى، فإن وجود عدة عبارات و في مشروع ما يشبه السفر
على طريق به عدة مخارج. اعتمادًا على المكان الذي تحاول الذهاب إليه، ستلتفت إلى أماكن
مختلفة. على سبيل المثال، إذا كنت ستذهب إلى المدرسة، فستنعطف يسارًا ؛
إذا كنت ستذهب إلى المتجر، فستنعطف يمينًا. ولكن ماذا لو لم تكن ذاهباً إلى المدرسة
أو المتجر ؟ سيبلغ كلا الشرطين عن خطأ، وستظل على الطريق المستقيم. أو ماذا لو كنت ستذهب
إلى كل من المدرسة والمتجر ؟ سيتم الإبلاغ عن كلا الشرطين بصحيح، ولكن لا يمكنك الدوران في
موقعين في نفس الوقت. 
لمتابعة القياس، فإن عبارة if else تشبه السفر إلى مفترق طرق – فهي تجبرك على اتخاذ
قرار. إذا كنت ستذهب إلى المدرسة، انعطف يسارًا ؛
وإلا، انعطف يمينًا. بغض النظر عن المكان الذي ستذهب إليه، يمكنك إما
الانعطاف يسارًا أو يمينًا. سيؤدي استخدام عبارة if else إلى تجنب الأخطاء مثل تلك
المذكورة أعلاه، لأنها ستجبرك على اتخاذ قرار، حيث يمكن أن يكون شرط واحد فقط
صحيحًا في لحظة معينة.