Skip to main content

الدرس 3: استخدام كتل [If then]

في تحدي متاهة القرص، يتحقق روبوت الواقع الافتراضي من حالة مستشعر العين الأمامي لمعرفة اللون الذي يتم الإبلاغ عنه. يتطابق كل لون من الألوان مع سلوك مختلف يجب أن يؤديه روبوت الواقع الافتراضي.

VEXcode VR If Then C block with a boolean parameter of 'Front Eye detects red?'.
  • ابدأ مشروعًا جديدًا وأطلق عليه اسم Unit7Lesson3.

    شريط أدوات VEXcode VR مع زر "اسم المشروع" المميز في مربع أحمر، على يسار زر Select Playground. تم تعيين اسم المشروع على الوحدة 7 الدرس 3.
  • اسحب كتلة [If then] إلى مساحة العمل وأرفقها بالكتلة [When started].

    برنامج VEXcode VR BLOCKS مع كتلة When Started وكتلة If Then C فارغة.

    لمعلوماتك

    كتلة [If then] هي كتلة C تقبل كتل المراسل المنطقية كإدخال. باستخدام الأنماط التي لوحظت أثناء حل متاهة القرص في الدرس 2، يمكن إنشاء مشروع حيث يتخذ روبوت الواقع الافتراضي قرارًا إذا كانت الحالة صحيحة أو خاطئة.

    VEXcode VR If Then C block مع مربع أحمر يبرز مساحة المعلمة المنطقية.

    سيتم تشغيل كتلة [If then] مرة واحدة في المشروع. في هذا المثال، سيصدر مستشعر العين الأمامي تقريرًا صحيحًا إذا تم اكتشاف كائن أخضر، وينفذ الأمر داخل الكتلة C - انعطف يمينًا لمدة 90 درجة. إذا لم يتم اكتشاف كائن أخضر، سينتقل المشروع إلى الأمر التالي في المكدس.

    مشروع VEXcode VR BLOCKS الذي يتحول إلى اليمين إذا كانت العين الأمامية تكتشف اللون الأخضر. يقرأ المشروع: عند البدء، إذا اكتشفت العين الأمامية اللون الأخضر، فاستدر يمينًا لمدة 90 درجة. خارج عبارة if توجد كتلة توقف القيادة.

    استخدام كتل المفاتيح 


    توضح الصورة أدناه عبارة كتلة التبديل [If then] لمشروع مثال الدرس هذا. 

    نفس مشروع كتل VEXcode VR ولكن مع كتل التبديل المضمنة، والتي تتحول إلى اليمين إذا كانت العين الأمامية تكتشف اللون الأخضر. يبدأ المشروع بكتلة عند البدء ويتبعه إصدار كتلة التبديل C من كتلة If Then. يقرأ رمز بايثون "if front_eye.detect(GREEN): drivetrain.turn_for(RIGHT, 90, DEGREES )". خارج عبارة if توجد كتلة توقف القيادة.

     يتضمن المشروع أدناه نفس الأوامر التي تم تحويلها إلى كتلة تبديل واحدة.  

    السطر الأول من التعليمات البرمجية، إذا كانfront_eye.detect (أخضر): هو الحلقة الشرطية التي تتحقق مما إذا كان مستشعر العين الأمامي يكتشف اللون الأخضر. لاحظ أنه يجب أن يكون هناكقولون() في نهاية هذا السطر. 

    السطر الثاني من التعليمات البرمجية، drivetrain.turn_for(RIGHT, 90, DEGREES) يخبر الروبوت بالانعطاف إلى اليمين بمقدار 90 درجة عندما يكتشف مستشعر العين الأمامي اللون الأخضر. يتم وضع مسافة بادئة على هذا الخط افتراضيًا عند 4 مسافات لأن هذا هو السلوك المحدد الذي سيتم إجراؤه إذا اكتشف مستشعر العين الأمامي اللون الأخضر. 

    نفس مشروع كتل VEXcode VR ولكن مع كتل التبديل المضمنة، والتي تتحول إلى اليمين إذا كانت العين الأمامية تكتشف اللون الأخضر. يبدأ المشروع بكتلة عند البدء ويتبعه إصدار كتلة التبديل C من كتلة If Then. يقرأ رمز بايثون "if front_eye.detect(GREEN): drivetrain.turn_for(RIGHT, 90, DEGREES )". خارج عبارة if توجد كتلة توقف القيادة.

  • اسحب <Color sensing> كتلة إلى مساحة العمل في الإدخال السداسي للكتلة [If then].

    مشروع VEXcode VR blocks الذي يستخدم عبارة if لاستشعار لون القرص. يبدأ بكتلة "متى بدأت" ثم كتلة تعليق تقرأ "إذا اكتشفت العين الأمامية اللون الأخضر ثم انعطف يمينًا". أخيرًا، هناك كتلة If Then فارغة مع معامل منطقي لكتلة استشعار اللون التي تقرأ "العين الأمامية تكتشف اللون الأحمر ؟".
  • قم بتغيير معلمة <Color sensing> الكتلة إلى "أخضر".

    مشروع VEXcode VR blocks الذي يستخدم عبارة if لاستشعار قرص أخضر. يبدأ بكتلة "متى بدأت" ثم كتلة تعليق تقرأ "إذا اكتشفت العين الأمامية اللون الأخضر ثم انعطف يمينًا". أخيرًا، هناك كتلة If Then فارغة مع معامل منطقي لكتلة استشعار اللون التي تقرأ "العين الأمامية تكتشف اللون الأخضر ؟". القائمة المنسدلة للألوان مفتوحة لتغيير اللون من الأحمر إلى الأخضر.
  • عندما يكتشف مستشعر العين الأمامي قرصًا أخضر، سيحتاج روبوت الواقع الافتراضي إلى الانعطاف يمينًا 90 درجة لبدء حل متاهة القرص. اسحب كتلة [Turn for] إلى كتلة [If then].

    يحجب VEXcode VR المشروع الذي يستخدم عبارة if لاستشعار قرص أخضر ثم الانعطاف يمينًا. يبدأ بكتلة "متى بدأت" ثم كتلة تعليق تقرأ "إذا اكتشفت العين الأمامية اللون الأخضر ثم انعطف يمينًا". أخيرًا، هناك كتلة If Then مع معامل منطقي لكتلة استشعار اللون التي تقرأ "العين الأمامية تكتشف اللون الأخضر ؟" و انعطف يمينًا لكتلة 90 درجة داخل حاوية If التي سيتم تشغيلها إذا كان المنطق صحيحًا.
  • اتبع هذه الخطوات نفسها لإضافة كتلة [If then] أخرى لجميع الألوان الثلاثة في متاهة القرص (الأخضر والأزرق والأحمر). يرتبط كل لون بسلوك مختلف. ستحتاج الكتل داخل كتلة [If then] إلى مطابقة هذا السلوك المقصود. أضف الكتل التالية إلى المشروع. عندما يكتشف روبوت الواقع الافتراضي اللون "الأزرق"، سينعطف روبوت الواقع الافتراضي يسارًا بزاوية 90 درجة.

    نفس VEXcode VR يمنع المشروع من قبل ولكن مع إضافة عبارة if للانعطاف يسارًا إذا كان هناك قرص أزرق. يبدأ بكتلة عند البدء ثم هناك كتلة If Then مع معامل منطقي لكتلة استشعار اللون التي تقرأ "العين الأمامية تكتشف اللون الأخضر ؟" والانعطاف لليمين لكتلة 90 درجة داخل حاوية If. أخيرًا، هناك نفس الشيء إذا تم اكتشاف كتلة وكتلة مكدسة ولكن تم تغييرها إلى الانعطاف يسارًا لمدة 90 درجة إذا تم اكتشاف اللون الأزرق.
  • عندما يصل روبوت الواقع الافتراضي إلى نهاية المتاهة، سيكتشف روبوت الواقع الافتراضي اللون "الأحمر".

    روبوت الواقع الافتراضي في ملعب VR Disk Maze، يتم إيقاف الروبوت وينظر نحو قرص أحمر.
  • لإيقاف روبوت الواقع الافتراضي، يجب إضافة كتلة أخرى [إذا كان الأمر كذلك] مع تعليمات حول ما يجب فعله عندما يكتشف روبوت الواقع الافتراضي "الأحمر". أضف الكتل التالية إلى المشروع.

    نفس VEXcode VR يمنع المشروع من قبل ولكن مع إضافة عبارة if لإيقاف القيادة إذا كان هناك قرص أحمر. يبدأ بكتلة عند البدء ثم هناك كتلة If Then مع معامل منطقي لكتلة استشعار اللون التي تقرأ "العين الأمامية تكتشف اللون الأخضر ؟" والانعطاف لليمين لكتلة 90 درجة داخل حاوية If. بعد ذلك، هناك نفس الشيء إذا تم اكتشاف كتلة وكتلة مكدسة ولكن تم تغييرها إلى الانعطاف يسارًا لمدة 90 درجة إذا تم اكتشاف اللون الأزرق. أخيرًا، نفس الشيء إذا تم استخدام مكدس الكتلة وكتلة الانعطاف ولكن تم تغييره إلى إيقاف القيادة إذا تم اكتشاف اللون الأحمر.
  • يمكن لروبوت الواقع الافتراضي أيضًا اتخاذ قرار إذا لم ير لونًا باستخدام قيمة "لا شيء". في نقطة بداية متاهة القرص، لا يكتشف روبوت الواقع الافتراضي أي ألوان.

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

    VEXcode VR Color Sensing block، الذي يقرأ "العين الأمامية لا تكتشف شيئًا ؟". هناك قائمة منسدلة مفتوحة لإظهار كيف يمكن للمستخدم تغيير اللون المستهدف إلى لا شيء.
  • أضف الكتل التالية إلى المشروع. عندما لا يكتشف روبوت الواقع الافتراضي أي لون، فإن روبوت الواقع الافتراضي سوف يتقدم للأمام.

    يقوم نفس VEXcode VR بحظر المشروع من قبل ولكن مع إضافة عبارة if للمضي قدمًا إذا لم يتم اكتشاف قرص. يبدأ بكتلة عند البدء ثم هناك كتلة If Then مع معامل منطقي لكتلة استشعار اللون التي تقرأ "العين الأمامية تكتشف اللون الأخضر ؟" والانعطاف لليمين لكتلة 90 درجة داخل حاوية If. بعد ذلك، هناك نفس الشيء إذا تم اكتشاف كتلة وكتلة مكدسة ولكن تم تغييرها إلى الانعطاف يسارًا لمدة 90 درجة إذا تم اكتشاف اللون الأزرق. بعد ذلك، نفس الشيء إذا تم استخدام مكدس الكتلة وكتلة الانعطاف ولكن تم تغييره إلى إيقاف القيادة إذا تم اكتشاف اللون الأحمر. أخيرًا، نفس الشيء إذا تم استخدام مكدس الكتلة وكتلة الانعطاف ولكن تم تغييره إلى Drive Forward إذا لم يتم اكتشاف أي لون.
  • يحتوي روبوت الواقع الافتراضي الآن على تعليمات لكل لون يتم اكتشافه بواسطة مستشعر العين.
    • يكتشف مستشعر العين الأمامية اللون الأخضر ؟
      • انعطف يمينًا 90 درجة
    • يكتشف مستشعر العين الأمامية اللون الأزرق ؟
      • انعطف يسارًا 90 درجة
    • يكتشف مستشعر العين الأمامية "أحمر ؟"
      • توقف عن القيادة
    • يكتشف مستشعر العين الأمامية "لا شيء ؟"
      • المضي قدمًا
  • افتح Disk Maze Playground وقم بتشغيل المشروع.

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