الدرس 4: استخدام اللانهائية أثناء الحلقات
حل مشكلة متاهة القرص
بناء المشروع
- قم بتحميل مشروع Unit7Lesson3 من الدرس السابق، أو أعد إنشاء المشروع الموضح هنا للبدء.
def main():# If
front eye detectings green then turn right
if front_eye.detect (GREEN): drivetrain.turn_for
(RIGHT, 90, DEGREES
)# If front eye detectings blue then turn left
if front_eye.detect (BLUE): drivetrain.turn_for
(LEFT, 90, DEGREES
)# If front eye detect red then stop
if front_eye.detect (RED):
drivetrain.stop
()# If front eye detects none then drive forward
if front_eye.detect(NONE):
drivetrain.drive(FORWARD)
-
إعادة تسمية المشروع Unit7Lesson4.
- اسحب أو اكتب حلقة لا نهائية بينما إلى أعلى المشروع، ثم اضبط الشرط على True.
def main ():
while True:
wait(5, MSEC)
- انقل الأمر wait لإفساح المجال للأوامر التي ستدخل داخل الحلقة اللانهائية while .
def main ():
while True:
wait(5, MSEC)
- داخل الحلقة اللانهائية while ، انسخ وألصق العبارات السابقة if داخل الحلقة. لا تقم بحذف الأمر wait الموجود في أسفل حلقة while. قد يبدو مشروعك هكذا. لاحظ أن نسخ الأوامر ولصقها بهذه الطريقة لا يؤدي إلى المسافة البادئة الصحيحة.
def main ():
while True:
# If front eye detects green then turn right
if front_eye.detect (GREEN): drivetrain.turn_for
(RIGHT, 90, DEGREES)
# If front eye detects blue then turn left
if front_eye.detect (BLUE): drivetrain.turn_for
(LEFT, 90, DEGREES)
# If front eye detect red then stop
if front_eye.detect (RED):
drivetrain.stop ()
# If front eye detects none then drive forward
if front_eye.detect (NONE): drivetrain.drive
(FORWARD)
wait(5, MSEC)
- تذكر أن المسافة البادئة مهمة جدًا في VEXcode VR Python. من أجل تنفيذ تدفق المشروع كما هو مقصود، يجب وضع العبارات if داخل الحلقة اللانهائية while . قم بتحديد العبارات if ثم اضغط على "Tab" لوضعها ضمن الحلقة اللانهائية while . عند وضع المسافة البادئة بشكل صحيح، يجب أن يبدو مشروعك كما يلي:
def main ():
while True:
# If front eye detects green then turn right
if front_eye.detect (GREEN): drivetrain.turn_for
(RIGHT, 90, DEGREES)
# If front eye detects blue then turn left
if front_eye.detect (BLUE): drivetrain.turn_for
(LEFT, 90, DEGREES)
# If front eye detect red then stop
if front_eye.detect (RED):
drivetrain.stop ()
# If front eye detects none then drive forward
if front_eye.detect (NONE): drivetrain.drive
(FORWARD)
wait(5, MSEC)
- بإضافة الحلقة اللانهائية while إلى المشروع، سيتم التحقق من شروط جميع عبارات if بشكل متكرر. افتح Disk Maze Playground وقم بتشغيل المشروع.
-
عند تشغيل هذا المشروع، سيتنقل روبوت الواقع الافتراضي في Disk Maze Playground من البداية إلى النهاية. بمجرد أن يكتشف روبوت الواقع الافتراضي اللون الأحمر، سيتوقف عن القيادة.
باختصار
- في المشروع من الدرس السابق، تم التحقق من الشروط داخل العبارات if مرة واحدة فقط. نظرًا لأن الشروط داخل العبارات if تم فحصها مرة واحدة فقط، فقد تحرك روبوت الواقع الافتراضي إلى الأمام إلى الأبد لأن حالة اكتشاف "عدم وجود لون" تم الإبلاغ عنها على أنها صحيحة في بداية المشروع.
- Now that the infinite while loop has been added, each condition of the if statements will be checked repeatedly. شرط الحلقة while يكون دائمًا صحيحًا، وبالتالي فإن الكود الموجود داخل الحلقة while سيتم تنفيذه دائمًا. سيؤدي هذا إلى التحقق بشكل متكرر من شروط العبارات if أثناء تشغيل المشروع.
- أثناء سير المشروع، إذا كان شرط العبارة if صحيحًا، فسيتم تنفيذ الأوامر الموجودة داخل العبارة if . إذا كان شرط العبارة if هو False، فلن يتم تنفيذ الأوامر الموجودة داخل العبارة if ، وسيستمر تدفق المشروع إلى الأمر التالي. وهذا يمكّن روبوت الواقع الافتراضي من أداء سلوكيات منفصلة مثل الدوران أو التوقف بمجرد اكتشاف لون معين.
- إذا تم استخدام العبارات مع حلقات لا نهائية لضمان التحقق من الظروف باستمرار.