Skip to main content

الدرس 2: إذا/عبارات مشروطة أخرى

في هذا الدرس، ستنشئ مشروعًا حيث يقرع روبوت الواقع الافتراضي مبنيين على الأقل في ملعب Dynamic Castle Crasher. ستكون هناك حاجة إلى خوارزمية لحل التحدي باستخدام الحلقات وتعليقات المستشعر لأن تخطيط الملعب يتغير مع كل إعادة تعيين.

أمثلة على تخطيطات ملعب Dynamic Castle Crasher:

ثلاث مناظر من أعلى إلى أسفل لعينة من تخطيطات ملعب Dynamic Castle Crasher مع الروبوت في نفس وضع البداية والقلاع في أوضاع مختلفة. التصميمات جنبًا إلى جنب، للتأكيد على كيفية تغيير القلاع لموضعها في كل مرة يتم فيها إعادة ضبط الملعب.

مخرجات التعلم

  • حدد أن كتلة [If then else] هي كتلة C تقوم بتشغيل الكتل داخل فرع If أو Else بناءً على القيمة المنطقية المبلغ عنها.
  • حدد أن كتلة [If else] تستخدم عادة مع كتلة [Repeat] أو [Forever] للتحقق من الحالة أكثر من مرة.
  • حدد ووصف سبب استخدام كتلة [If then else] مع الحلقات.
  • صف ما الذي قد يتسبب في تشغيل فرع [إذا كان الأمر كذلك] في مشروع.

كيفية استخدام حظر [If then else]

يختلف هذا التحدي عن تحدي Castle Crasher في الوحدة 2. استخدم تحدي الوحدة 2 تسلسلًا بسيطًا وأوامر مجموعة نقل الحركة لضرب المباني في ملعب ثابت.

عينة من مشروع VEXcode VR من الوحدة 2. يبدأ المشروع بكتلة "متى بدأت" ويحتوي على 6 كتل مرفقة. تقرأ الكتل، بالترتيب، ضبط سرعة القيادة على 100 ٪ ؛ ضبط سرعة الانعطاف على 100 ٪ ؛ القيادة للأمام لـ 1550 مم ؛ الانعطاف يمينًا لـ 180 درجة ؛ القيادة للأمام لـ 700 مم ؛ ثم الانعطاف يمينًا لـ 90 درجة.

لن تكون أوامر مجموعة نقل الحركة وحدها كافية لجعل روبوت الواقع الافتراضي يهدم مبنيين أو أكثر بسبب المخططات المتغيرة لملعب كسارة القلعة الديناميكية. قد تعمل مجموعة من أوامر مجموعة نقل الحركة في ملعب واحد، ولكن ليس في ملعب آخر. ستكون هناك حاجة إلى خوارزمية تستخدم أجهزة الاستشعار والاختيار. سيتم استخدام كتلة [إذا كان الأمر كذلك] لإنشاء خوارزمية عن طريق إضافة تحديد مع عبارات مشروطة لهذا المشروع.

منظر من أعلى إلى أسفل لملعب Dynamic Castle Crasher Playground مع بعض القلاع فقط التي تم إسقاطها، والبعض الآخر لم يتم لمسها، لتوضيح كيف أن أوامر مجموعة نقل الحركة وحدها غير كافية عندما يتغير موضع القلاع بشكل عشوائي.

هناك خطوتان رئيسيتان لروبوت الواقع الافتراضي لضرب المباني في ملعب Dynamic Castle Crasher.

  1. إذا اكتشف روبوت الواقع الافتراضي مبنى قلعة، فقم بالقيادة للأمام نحوه لإسقاطه.
    1. على عكس أي ملعب آخر، لا يحتوي ملعب Dynamic Castle Crasher على جدران. نظرًا لأن المباني هي الأشياء الوحيدة الموجودة في ملعب Dynamic Castle Crasher، يمكن استخدام مستشعر المسافة للكشف عن المباني.

      منظر من أعلى لأسفل لملعب Dynamic Castle Crasher Playground مع وضع الروبوت في موضع البداية، في أسفل وسط التخطيط، مع سهم منقط يشير إلى قلعة مباشرة أمام الروبوت الذي يتم تمييزه في مربع أحمر. يشير السهم إلى أن المستشعر يمكنه اكتشاف القلعة ككائن أمامها.
  2. إذا لم يكتشف روبوت الواقع الافتراضي مبنى قلعة، فاستدر وتحقق من وجود مبنى قلعة مرة أخرى.
    1. نظرًا لأن المباني هي الأشياء الوحيدة الموجودة في ملعب Dynamic Castle Crasher، يمكن استخدام مستشعر المسافة للكشف عن مباني القلعة.

      منظر من أعلى إلى أسفل لملعب Dynamic Castle Crasher، مع وجود الروبوت في وضع البداية، وأسهم منحنية على جانبيها، مما يشير إلى الحاجة إلى الدوران حتى يتم اكتشاف كائن القلعة.

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

  • ابدأ مشروعًا جديدًا في VEXcode VR واسم المشروع Unit9Lesson2.

    مربع اسم المشروع في منتصف شريط أدوات VEXcode VR المميز بمربع أحمر، على يسار زر Select Playground. اسم المشروع هو الوحدة 9 الدرس 2.
  • أضف كتلتين [تعليق] إلى مساحة العمل واملأ الخطوات الموضحة أعلاه.

    مشروع VEXcode VR جديد مع كتلتي تعليق مرفقتين بكتلة متى بدأت. التعليقات مقروءة بالترتيب: انقر فوق المبنى الذي تم العثور عليه باستخدام مستشعر المسافة ؛ واستدر للعثور على مبنى باستخدام مستشعر المسافة.
  • يمكن استخدام كتلة [إذا كان الأمر كذلك] لتحريك كل إجراء من الإجراءات الموضحة أعلاه. يعتمد كل إجراء على ما إذا كانت الحالة المنطقية في كتلة [إذا كان الأمر كذلك] تشير إلى صواب أو خطأ. أضف كتلة [If then else] أسفل كتل [Comment].

    نفس مشروع VEXcode VR مع كتلة If else المرفقة أدناه التعليق الثاني. يتم ترك معلمة الفرع If مفتوحة.

    لمعلوماتك

    الكتلة [إذا كان الأمر كذلك] هي كتلة C التي تقبل كتل المراسل المنطقية كإدخال. كتلة [إذا كان الأمر كذلك] هي عبارة مشروطة تتحكم في تدفق المشروع. ستقوم كتلة [إذا كان الأمر كذلك] بتنفيذ تسلسل معين من التعليمات إذا تم استيفاء الشرط، ومجموعة أخرى من التعليمات إذا لم يتم استيفاء الشرط، وبالتالي "تتفرع" تدفق المشروع. سيتم تنفيذ فرع واحد فقط في [If then else].

    إذا كان الأمر كذلك، فقم بالمنع من VEXcode VR Toolbox.
    • إذا تم الإبلاغ عن الحالة على أنها صحيحة، يتم تشغيل الكتل الموجودة داخل فرع If Then.
    • إذا تم الإبلاغ عن الحالة على أنها خاطئة، يتم تشغيل الكتل الموجودة داخل فرع ELSE.
    يتم استخدام مشروع VEXcode VR لتوضيح وظيفة كل فرع من كتلة If then else. في هذا المشروع، إذا تم إرفاق كتلة أخرى بـ "متى بدأت" وتقرأ إذا وجدت المسافة الأمامية كائنًا، فقم بالتعليق - اضغط على المبنى الذي تم العثور عليه باستخدام مستشعر المسافة والمضي قدمًا ؛ وإلا، استدر للعثور على مبنى باستخدام مستشعر المسافة، واستدر يمينًا. يُسمى فرع "If then" Drive forward إذا اكتشف مستشعر المسافة كائنًا. يتم تصنيف فرع "ELSE" على أنه انعطف يمينًا إذا لم يكتشف مستشعر المسافة كائنًا.

    بمجرد تشغيل جميع الكتل داخل أحد الفروع، سينتقل المشروع إلى الكتلة التالية خارج كتلة [If then else].

  • في هذا المشروع، يمكن استخدام مستشعر المسافة للكشف عن المباني في الملعب. أضف <Distance found object> كتلة إلى كتلة [If then else].

    نفس مشروع VEXcode VR من قبل، مع إضافة كتلة كائن تم العثور على المسافة كمعلمة لفرع If then. يقرأ كتلة If then الآن If Front Distance found an object then.

    لمعلوماتك

    <Distance found object> الكتلة عبارة عن كتلة مراسل منطقية تبلغ عما إذا كان مستشعر المسافة قد وجد كائنًا أمام روبوت الواقع الافتراضي. تشير هذه الكتلة إلى صحتها عندما يكون هناك جسم أو سطح ضمن 3000 ملليمتر (مم) من روبوت الواقع الافتراضي.

    المسافة التي تم العثور عليها كائن كتلة VEXcode VR من صندوق الأدوات الذي يقرأ المسافة الأمامية وجدت كائنًا ؟
  • الآن يجب تحديد كل فرع من كتلة [إذا كان الأمر كذلك] باستخدام التعليقات التي تم إنشاؤها في بداية المشروع. عندما تكون تقارير <Distance found object> الكتلة صحيحة، يجب أن يقود روبوت الواقع الافتراضي نحو هذا المبنى لإسقاطه. انقل كتلة [التعليق] هذه إلى فرع "إذا كان بعد ذلك" من المشروع.

    انتقل نفس مشروع VEXcode VR مع التعليق الأول داخل C لفرع If then. يقرأ المشروع الآن عند البدء، إذا وجدت المسافة الأمامية كائنًا، فاضرب المبنى الذي تم العثور عليه باستخدام مستشعر المسافة.
  • انقل كتلة [التعليق] الأخرى إلى فرع "آخر" من المشروع لمعرفة ما يجب أن يحدث إذا لم يكتشف روبوت الواقع الافتراضي مبنى.

    نفس مشروع VEXcode VR مع التعليق الثاني داخل C للفرع الآخر. يقرأ المشروع الآن عند البدء، إذا وجدت المسافة الأمامية كائنًا، فاضرب المبنى الذي تم العثور عليه باستخدام مستشعر المسافة ؛ وإلا، استدر للعثور على مبنى باستخدام مستشعر المسافة.
  • أضف كتلة [Drive] إلى فرع "If Then" في كتلة [If then else].

    نفس مشروع VEXcode VR مع كتلة محرك أقراص تم تعيينها لإعادة التوجيه أسفل التعليق الأول في فرع If then. يقرأ الفرع If then الآن، If Front Distance found an object, then Comment Knock over the building found using the Distance sensor; Drive forward.
  • عندما تبلغ <Distance found object> الكتلة عن خطأ، سيحتاج روبوت الواقع الافتراضي إلى الاستدارة والعثور على مبنى في الملعب. أضف كتلة [Turn] أسفل كتلة [Comment] في فرع "Else" من كتلة [If then else].

    نفس مشروع VEXcode VR مع كتلة انعطاف مضبوطة على اليمين أسفل التعليق الثاني في فرع ELSE. يقرأ فرع ELSE الآن، ELSE، تعليق الانعطاف للعثور على مبنى باستخدام مستشعر المسافة ؛ ثم انعطف يمينًا.
  • قبل اختبار المشروع، يجب إضافة كتلة أخرى. [إذا كان الأمر كذلك] ستتحقق الكتل من الحالة مرة واحدة فقط قبل الانتقال إلى الكتلة التالية في الكومة. في الوحدة 7، تمت إضافة كتلة [Forever] إلى المشروع لإرشاد روبوت الواقع الافتراضي للتحقق مرارًا وتكرارًا من حالة مستشعر العين السفلي. للتأكد من فحص حالة مستشعر المسافة بشكل متكرر، اسحب كتلة [Forever] إلى مساحة العمل حول كتلة [If then else].

    نظرة عامة على كيفية إضافة كتلة Forever إلى المشروع بحيث تكون كتلة If else بأكملها داخل كتلة C of the Forever. يقرأ المشروع الآن عند البدء، إلى الأبد، إذا وجدت المسافة الأمامية كائنًا، فقم بالقيادة للأمام ؛ وإلا انعطف يمينًا.
  • افتح ملعب Dynamic Castle Crasher وقم بتشغيل المشروع.

    منظر من أعلى إلى أسفل لملعب Castle Crasher مع ثلاث قلاع سليمة ومبنيين للقلعة محطمين. يقع الروبوت في الزاوية اليمنى العليا بجانب قلعة مهزومة.
  • بمجرد أن يطرق روبوت الواقع الافتراضي مبنيين على الأقل، أعد تحميل الملعب وقم بتشغيل المشروع على تخطيط آخر لملعب Dynamic Castle Crasher.

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

    منظر جانبي لروبوت الواقع الافتراضي يدفع قطعة قلعة من جانب الملعب، لكن الروبوت بدأ في القيادة على حدود الملعب كما لو أنه سيسقط أيضًا من الحافة.
  • أثناء تشغيل المشروع، قد يدفع روبوت الواقع الافتراضي قطعة بناء على طول الطريق إلى الحافة ويسقط من الملعب. وذلك لأن <Distance found object> الكتلة لا تزال تبلغ عن وجود كائن أمام روبوت الواقع الافتراضي. عندما تكون هذه الكتلة صحيحة، فإن روبوت الواقع الافتراضي يتحرك للأمام. مما يؤدي إلى سقوط روبوت الواقع الافتراضي من على الطاولة.

قم بتحديد زر التالي للمتابعة مع بقية هذا الدرس.