كيفية تنفيذ حلقات 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