"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تشغيل حلقات while المتعددة بشكل متزامن في Pygame؟

كيفية تشغيل حلقات while المتعددة بشكل متزامن في Pygame؟

تم النشر بتاريخ 2024-11-07
تصفح:135

How to Run Multiple While Loops Concurrently in Pygame?

كيفية تنفيذ حلقات while المتعددة في وقت واحد في Pygame

في Pygame، من الممكن تنفيذ حلقات while متعددة بشكل متزامن، مما يسمح بحلقات مستقلة و عمليات مستمرة داخل برنامجك.

التغلب على حظر التنفيذ]

في مقتطف التعليمات البرمجية المقدم، تنشأ المشكلة من وجود حلقتين أثناء محاولة التشغيل في نفس الوقت . الحلقة الثانية، التي تتضمن دالة time.sleep()‎ لإحداث تأخير، تتداخل مع تنفيذ الحلقة الأولى، وهو أمر بالغ الأهمية لوظيفة البرنامج المستمرة.

استخدام وقت النظام للتأخير

بدلاً من الاعتماد على time.sleep() لتأخير تنفيذ كتلة معينة من التعليمات البرمجية، يوصى بالاستفادة من وحدة pygame.time. يوفر Pygame.time.get_ticks() إمكانية الوصول إلى وقت النظام بالمللي ثانية منذ تهيئة البرنامج.

التكامل مع الحلقة

لمنع حظر حلقة واحدة بأخرى، فكر في دمج الإستراتيجية التالية:

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

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

مثال على التعليمات البرمجية

ارجع إلى مقتطف التعليمات البرمجية التالي للحصول على مثال كامل يعرض تنفيذ حلقات while المتعددة في Pygame:

استيراد pygame استيراد عشوائي # تهيئة Pygame pygame.init() # تحديد أبعاد الشاشة عرض_الشاشة = 800 ارتفاع الشاشة = 600 الشاشة = pygame.display.set_mode((screen_width, screen_height)) # تحديد بعض الوجوه الوجوه = ['^-^'، '^v^'، '◠◡◠'، "'v'"، '⁀◡⁀'] # تحديد الوجه الحالي current_face = اختيار عشوائي (الوجوه) # إعداد الخط الخط = pygame.font.SysFont('Arial', 100) # تجسيد الوجه face_surface = الخط.render(current_face, صحيح, (0, 255, 0)) # احصل على وسط الشاشة center_x = عرض الشاشة // 2 center_y = ارتفاع الشاشة // 2 # إعداد الحلقة الرئيسية تشغيل = صحيح أثناء الجري: # أحداث العملية للحدث في pygame.event.get(): إذا كان events.type == pygame.QUIT: تشغيل = خطأ # احسب المرة القادمة التي يجب فيها تحديث الوجه next_update_time = pygame.time.get_ticks() randint(5000, 10000) # إذا حان الوقت لتحديث الوجه، افعل ذلك إذا كان pygame.time.get_ticks() >= next_update_time: current_face = اختيار عشوائي (الوجوه) face_surface = الخط.render(current_face, صحيح, (0, 255, 0)) # ارسم كل شيء على الشاشة ملء الشاشة ((0، 0، 0)) screen.blit(face_surface, (center_x -face_surface.get_width() // 2, center_y -face_surface.get_height() // 2)) pygame.display.update()

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3