القراء مثلك يساعدون في دعم MUO. عند إجراء عملية شراء باستخدام الروابط الموجودة على موقعنا ، فقد نربح عمولة تابعة. اقرأ أكثر.

هل سبق لك أن أردت إنشاء لعبة مثيرة باستخدام مكتبة Python PyGame ، لكنك شعرت بالإرهاق من مفهوم إدارة الوقت؟ إذا كان الأمر كذلك ، فأنت لست وحدك.

الوقت هو أحد أهم مكونات تطوير اللعبة ، وفهم كيفية عمل الوقت في PyGame ضروري لإنشاء ألعاب جذابة وناجحة. يوفر PyGame العديد من الوظائف والوحدات النمطية المفيدة التي تتيح لك التحكم في الوقت في ألعابك.

إنشاء لعبة بسيطة

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

نقطة تثبيت pygame

يمكنك العثور على جميع أمثلة التعليمات البرمجية في هذا جيثب ريبو.

بمجرد التثبيت ، قم باستيراد وحدة PyGame. ثم أنشئ شاشة بحجم 800 × 600 ولون خلفية بيضاء ، وأضف كائنًا مستطيلًا. يجب أن يبدو الرمز كما يلي:

يستورد القزم
pygame.init ()
الشاشة = pygame.display.set_mode ((800, 600))
الخلفية = pygame. السطح (screen.get_size ())
background.fill ((255, 255, 255))
rect = pygame. مستطيل (0, 0, 20, 20)
instagram viewer

بعد ذلك ، استخدم حلقة while loop لإبقاء اللعبة قيد التشغيل واستمر في تحريك الكائن المستقيم لليمين حتى يصل إلى نهاية الشاشة.

تشغيل = حقيقي

بينما جري:
ل حدث في pygame.event.get ():
لو event.type == pygame. يترك:
تشغيل = خطأ شنيع

rect.x + = 1

لو Rect.x> 780:
rect.x = 0

screen.blit (الخلفية ، (0, 0))
pygame.draw.rect (شاشة ، (0, 0, 0) ، مستقيم)
pygame.display.update ()

يمكنك أيضًا إضافة مدخلات المستخدم و الاصطدامات في اللعبة. أدناه هو الإخراج:

نظرة عامة على وحدة الوقت في PyGame

للتحكم في الوقت في هذه اللعبة ، يمكنك استخدام ملف pygame.time وحدة. توفر هذه الوحدة العديد من الميزات المفيدة ، بما في ذلك أ ساعة الكائن بأساليب مثل get_ticks (), انتظر()، و تأخير(). باستخدام هذه الوظائف ، يمكنك بسهولة التحكم في الوقت في لعبتك.

إنشاء كائن الساعة لتتبع الوقت

في PyGame ، يمكنك استخدام كائن الساعة لتتبع الوقت. لإنشاء ساعة ، ما عليك سوى استخدام سطر التعليمات البرمجية التالي:

الساعة = pygame.time. ساعة()

باستخدام كائن الساعة هذا ، يمكنك الآن تتبع الوقت في لعبتك. هناك أيضًا العديد من الوظائف المفيدة الأخرى المرتبطة بكائن الساعة ، مثل:

  • احصل على وقت(): بمساعدة هذه الوظيفة ، يمكنك استرداد الوقت المستغرق لكل إطار من اللعبة. لاستخدام هذه الوظيفة ، ما عليك سوى إضافة السطر التالي من التعليمات البرمجية بعد حلقة while:
    الوقت = clock.get_time ()
    أضف كائنًا نصيًا لعرض الوقت المستغرق:
    الخط = pygame.font. SysFont ("اريال", 18)
    text = font.render ("الوقت المستغرق: {} مللي ثانية".format (الوقت) ، حقيقي, (0, 0, 0))
    screen.blit (النص ، (0, 0))
  • علامة (): استخدم هذه الوظيفة لضبط معدل الإطارات للعبة. بشكل افتراضي ، يتم تعيين معدل الإطارات على 60 إطارًا في الثانية. لضبطه على 30 إطارًا في الثانية ، ما عليك سوى إضافة السطر التالي من التعليمات البرمجية:
    على مدار الساعة.30)
  • get_fps (): يمكنك استرداد معدل الإطارات الحالي للعبة باستخدام get_fps. لاستخدام هذه الوظيفة ، ما عليك سوى إضافة السطر التالي من التعليمات البرمجية:
    fps = clock.get_fps ()
    يمكنك إضافة كائن نص لعرض معدل الإطارات:
    الخط = pygame.font. SysFont ("اريال", 18)
    text = font.render ("FPS: {}".format (fps) ، حقيقي, (0, 0, 0))
    screen.blit (النص ، (0, 20))
  • tick_busy_loop (): تتيح لك هذه الوظيفة حساب عدد المللي ثانية التي مرت منذ آخر مكالمة إلى علامة () وظيفة. لاستخدامه ، ما عليك سوى إضافة سطر التعليمات البرمجية التالي:
    clock.tick_busy_loop (30)

الحصول على الوقت باستخدام get_ticks

ال get_ticks () تُرجع الدالة الوقت بالمللي ثانية منذ تهيئة PyGame. لاستخدام هذه الوظيفة ، أضف السطر التالي من التعليمات البرمجية:

time_elapsed = pygame.time.get_ticks ()

أضف كائنًا نصيًا لعرض الوقت المستغرق:

الخط = pygame.font. SysFont ("اريال", 18)
text = font.render ("الوقت المنقضي: {} مللي ثانية".format (time_elapsed) ، حقيقي, (0, 0, 0))
screen.blit (النص ، (0, 40))

يمكنك استخدام الوقت المنقضي لتنفيذ عناصر اللعبة المستندة إلى الوقت مثل عمليات زيادة الطاقة التي تستمر لفترة زمنية محددة. على سبيل المثال ، يمكنك تنفيذ زيادة الطاقة التي تزيد من سرعة الكائن المستقيم لمدة 5 ثوانٍ:

لو انقضاء الوقت / 5000 > 0:
rect.x + = 5

أدناه هو الإخراج:

إيقاف اللعبة مؤقتًا باستخدام وظائف الانتظار والتأخير

يوفر PyGame أيضًا وظيفتين يمكنك استخدامهما لإيقاف اللعبة مؤقتًا لفترة زمنية محددة: انتظر وظيفة و تأخير وظيفة.

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

pygame.time.wait (1000)

سيؤدي هذا إلى إيقاف اللعبة مؤقتًا لمدة 1000 مللي ثانية (ثانية واحدة). لاستخدام ال تأخير وظيفة ، ما عليك سوى إضافة السطر التالي من التعليمات البرمجية في حلقة while:

pygame.time.delay (1000)

سيؤدي هذا إلى تأخير الإطار التالي للعبة لمدة 1000 مللي ثانية (ثانية واحدة).

الاختلافات بين الانتظار والتأخير

هناك بعض الاختلافات بين انتظر و تأخير المهام. ال انتظر وظيفة ينام عملية مشاركة المعالج مع البرامج الأخرى. ال تأخير ستستخدم الوظيفة المعالج لجعل التأخير أكثر دقة. هذا يعني أن ملف تأخير تتطلب الوظيفة طاقة معالج أكثر من انتظر وظيفة ومناسبة للألعاب التي تحتاج إلى توقيت دقيق.

إنشاء حدث باستخدام set_timer

يمكنك استخدام ال توقيت مجموعة() وظيفة لإنشاء حدث يتم تشغيله بعد فترة زمنية محددة.

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

pygame.time.set_timer (CUSTOM_EVENT ، 1000)

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

على سبيل المثال ، إذا كنت تريد تغيير المحور الصادي للكائن المستطيل بعد ثانية واحدة ، أو عند تشغيل الحدث المخصص ، يمكنك إضافة السطر التالي من التعليمات البرمجية:

لو event.type == CUSTOM_EVENT:
ص + = 20

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

تحسين ضوابط اللعبة مع مرور الوقت

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

باستخدام وظائف التحكم في الوقت في PyGame ، يمكنك بسهولة تنفيذ مثل هذه الميزات - والمزيد - في ألعابك الخاصة.