Skip to main content

الدرس 3: تدفق المشروع مع حلقات متعددة أثناء التشغيل

الآن بعد أن قمت بإنشاء مشروع نصي لتوجيه روبوت الواقع الافتراضي إلى الحرف "A" على متاهة الحائط ساحة اللعب، سوف تقوم بتوسيع مهاراتك باستخدام الشرطيات وقيم المستشعر. في هذا الدرس، سوف تقوم بتوجيه روبوت الواقع الافتراضي إلى الرقم "2" في متاهة الحائط ساحة اللعب، ثم تستكشف سبب الحاجة إلى أوامر إضافية للوصول إلى الحرف "B". في التحدي المصغر، ستطبق هذه المهارات للتنقل من بداية متاهة الجدار إلى الرقم "3".

منظر من أعلى إلى أسفل لملعب Wall Maze مع روبوت VR يبدأ من السهم الأخضر في أسفل وسط الملعب. يتم تمييز الرقم 2 في مربع أحمر، ويتم وضعه في وسط الربع الأيسر السفلي من المتاهة، ويترك خلف الحرف A. الرقم 2 في زاوية تم إنشاؤها بواسطة ثلاثة جدران تحيط به.

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

  • صف تدفق البرنامج في مشروع يحتوي على محرك روبوت الواقع الافتراضي للأمام حتى يتم الضغط على مستشعر المصد.

إعادة تسمية المشروع

  • إذا لم يتم تحميل مشروع الدرس السابق بالفعل، فقم بتحميل مشروع Unit4Lesson2.
  • إعادة تسمية المشروع Unit4Lesson3.شريط أدوات VEXcode VR يعرض الوحدة 4 الدرس 3 كاسم المشروع. يتم تمييز اسم المشروع بمربع أحمر.

     

 

تدفق المشروع للقيادة إلى الحرف "أ"

في الدرس السابق، توجه روبوت الواقع الافتراضي إلى الحرف "A" في متاهة الحائط ساحة اللعب. دعونا نقسم تدفق المشروع بينما نستعد للانتقال إلى موقع جديد في متاهة الجدار.

منظر من أعلى إلى أسفل لملعب المتاهة الجدارية مع روبوت الواقع الافتراضي في موقع البداية في الجزء السفلي الأوسط من الملعب. يقع الحرف A مباشرة على يسار الروبوت، ويفصل بينهما جدار قصير.
  • لفهم تدفق المشروع بشكل أفضل للوصول إلى الحرف "A" في متاهة الحائط ساحة اللعب، ابدأ بتعديل مشروعك السابق أو إنشاء مشروع جديد لمطابقة هذا المشروع الأساسي.

    def main ():
    	while not left_bumper.press (): drivetrain.drive (		FORWARD
    		)
    		wait(		5, MSEC) drivetrain.turn_for
    	
    	(LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed (): drivetrain.drive (
    		FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(LEFT, 90, DEGREES)
    
    	while not left_bumper.pressed (): drivetrain.drive
    		(FORWARD)
    		wait(5, MSEC
    	
    	) 	 	drivetrain.stop ()
  • عندما يستخدم مشروع حلقة بينما مع شرط وليس ، فإن تدفق برنامج المشروع لا يزال يتبع نفس التسلسل من أعلى إلى أسفل. تسمح حلقة بينما لتدفق البرنامج "بالتوقف مؤقتًا" عند نقطة معينة، بينما يتم استيفاء شرط ما.  يسمح غير المشغل للمشروع بالبقاء في الحلقة حتى يتم الإبلاغ عن الحالة خاطئة. ثم سيتدفق المشروع إلى الأمر التالي خارج الحلقة. ستبلغ الحالة المنطقية، مثل الضغط على المصد الأيسر، عن قيمة صواب أو خطأ. في هذا الرمز لقيادة روبوت الواقع الافتراضي إلى الحرف "A"، سيقود روبوت الواقع الافتراضي إلى الأمام حتى تصبح الحالة المنطقية للمصد الأيسر التي يتم الضغط عليها صحيحة. سيبدو تدفق
    المشروع للقيادة إلى الحرف "أ" كما يلي:رسم تخطيطي لتدفق المشروع يصف تدفق المشروع أعلاه للانتقال إلى الحرف A، والذي يظهر على اليسار. إلى اليمين، تشير الأسهم إلى كيفية تدفق المشروع. أولاً، يوضح السهم الدوري الأحمر أنه أثناء عدم الضغط على المصد، تعود حالة حلقة while خاطئة، لذلك يتحرك الروبوت للأمام. يوضح السهم الأخضر لأسفل بعد ذلك أنه عند الضغط على المصد، تبلغ الحالة عن صواب حتى يخرج المشروع من تلك الحلقة وينعطف الروبوت إلى اليسار بزاوية 90 درجة. يتكرر هذا التسلسل لكل حلقة في المشروع.

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

 

انطلق إلى الرقم "2"

في هذا الدرس، سيتم تحرير المشروع ليقود روبوت الواقع الافتراضي إلى الرقم "2" على متاهة الحائط ساحة اللعب!

منظر من أعلى إلى أسفل لملعب Wall Maze مع روبوت VR يبدأ من السهم الأخضر في أسفل وسط الملعب. يتم تمييز الرقم 2 في مربع أحمر، ويتم وضعه في وسط الربع الأيسر السفلي من المتاهة، ويترك خلف الحرف A. الرقم 2 في زاوية تم إنشاؤها بواسطة ثلاثة جدران تحيط به.
  • يحتوي المشروع من الدرس 2 على روبوت الواقع الافتراضي يتجه يسارًا للقيادة إلى الحرف "أ". للانتقال إلى الرقم "2"، سيتعين على روبوت الواقع الافتراضي الانعطاف يمينًا بدلاً من ذلك، والقيادة للأمام، ثم الانعطاف يسارًا.

    منظر من أعلى إلى أسفل لملعب المتاهة الجدارية حيث يتم وضع روبوت الواقع الافتراضي فوق علامة A، ويواجه الجدار الأيسر. يشير السهم الأحمر إلى A، وتظهر ثلاثة أسهم خضراء المسار المقصود إلى الرقم 2. تشير الأسهم الخضراء لأعلى نحو الجدار المقابل لـ A، ثم إلى اليسار نحو الجدار التالي إلى يسار الرقم 2، ثم إلى الأسفل في الزاوية التي تحمل الرقم 2.
  • قم بتغيير اتجاه الأمر الثاني turn_for إلى اليمين بدلاً من اليسار. يجب أن يبدو مشروعك الآن كما يلي:

    def main ():
    	while not left_bumper.press (): drivetrain.drive (		FORWARD
    		)
    		wait(		5, MSEC) drivetrain.turn_for
    	
    	(LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed (): drivetrain.drive (
    		FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for(RIGHT, 90, DEGREES)
    
    	while not left_bumper.pressed (): drivetrain.drive
    		(FORWARD)
    		wait(5, MSEC
    	
    	) 	 	drivetrain.stop ()
  • قم بتشغيل ملعب المتاهة الجدارية إذا لم يكن مفتوحًا بالفعل وقم بتشغيل المشروع.
  • شاهد روبوت الواقع الافتراضي يبدأ في القيادة إلى الرقم "2"، ولكن توقف عند الحائط. وبالتالي، يحتاج روبوت الواقع الافتراضي إلى الانعطاف يسارًا بمجرد الضغط على الحائط بدلاً من التوقف.

    منظر من أعلى إلى أسفل لملعب Wall Maze مع روبوت VR مواجه للجدار المقابل للحرف A، يشير لأعلى.
  • حدد الزر "إعادة الضبط" لإعادة ضبط الملعب وحرك روبوت الواقع الافتراضي مرة أخرى إلى وضع البداية.ملعب المتاهة الجدارية يعرض واجهة الملعب بأكملها. يتم تمييز زر إعادة الضبط في الجزء السفلي الأيسر من واجهة الملعب بصندوق أحمر.

     

  • قم بتعديل الكود عن طريق إزالة الأمر stop واستبداله بالأوامر التالية لتحريك روبوت الواقع الافتراضي إلى الرقم '2'.

    def main ():
    	while not left_bumper.pressed (): drivetrain.drive (للأمام
    		)
    		انتظر(		5، MSEC) 	 	drivetrain.turn_for (
    	
    	لليسار، 90، درجة)
    	
    	while not left_bumper.pressed (): drivetrain.drive (
    		للأمام)
    		انتظر(5، MSEC) 	 	drivetrain.turn_for
    	
    	(لليمين، 90، درجة)
    
    	while not left_bumper.pressed (): 		drivetrain.drive (
    		للأمام)
    		انتظر(5، MSEC) 	 	drivetrain.turn_for
    	
    	(لليسار، 90، درجة)
    	
    	while not left_bumper.pressed (): 		drivetrain.drive
    		(للأمام)
    		انتظر(5، MSEC)
    	
    	drivetrain.turn_for (لليسار، 90، درجة)
    
    	while not left_bumper.pressed ():
    		drivetrain.drive (للأمام)
    		انتظر(5، MSEC
    	
    	) 	 	drivetrain.stop ()
  • قم بتشغيل متاهة الجدار ملعب إذا لم تكن مفتوحة بالفعل وقم بتشغيل المشروع.
  • شاهد روبوت الواقع الافتراضي وهو يقود سيارته إلى الرقم "2" في متاهة الحائط ساحة اللعب!

    منظر من أعلى إلى أسفل لملعب المتاهة الجدارية. يتم وضع روبوت الواقع الافتراضي الآن فوق العلامة 2، ويواجه الجدار السفلي مع الضغط على واجهته مقابل الجدار.
  • حدد الزر "إعادة الضبط" لإعادة ضبط الملعب وحرك روبوت الواقع الافتراضي مرة أخرى إلى وضع البداية.

قم باختيار الزر التالي لمواصلة بقية هذا الدرس.