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

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

باستخدام برنامج Python البسيط ، يمكنك التعرف على عملية إنشاء شخصيات لعبة تعتمد على الرموز في Pygame. تعرف على كيفية إنشاء فئة Sprite أساسية ، ثم أضف سمات وأساليب للتحكم في السلوك.

مقدمة إلى فئة العفاريت في Pygame

فئة Sprite في Pygame هي فئة حاوية تحتوي على جميع سمات وسلوكيات شخصية اللعبة. مشتق من فئة السطح Pygame ، والتي تمثل صورة ذات عرض وارتفاع ثابتين.

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

إنشاء فئة أساسية للعفاريت لشخصية اللعبة

أولاً، قم بتثبيت وحدة pygame باستخدام نقطة. افعل ذلك باستخدام هذا الأمر:

نقطة ثَبَّتَ القزم

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

instagram viewer

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

  • موضع: مجموعة تحتوي على إحداثيات x و y للكائن على الشاشة.
  • سرعة: مجموعة تحمل السرعة التي يتحرك بها الكائن أفقيًا وعموديًا.

والطرق التالية:

  • تحديث(): طريقة تُحدِّث موضع الكائن بناءً على سرعته.
  • يرسم(): طريقة ترسم الكائن على الشاشة.

فيما يلي مثال على فئة Sprite الأساسية التي تنفذ هذه السمات والطرق:

يستورد القزم

فصللاعب(pygame.sprite. شبح):
def__فيه__(self، x، y، velocity_x، velocity_y):
ممتاز().__فيه__()
الذات.position = (x، y)
الذات.velocity = (velocity_x، velocity_y)

defتحديث(الذات):
الذات.position = (الذات.موضع[0] + الذات.سرعة[0], الذات.موضع[1] + الذات.سرعة[1])

defيرسم(ذاتي ، سطح):
القزم.يرسم.دائرة(سطح, (255, 0, 0), الذات.موضع, 10)

طريقة __init__ هي طريقة خاصة الطريقة في فصول بايثون يتم تشغيله عند إنشاء مثيل للفئة. يمكنك استخدامه لتهيئة سمات المثيل.

في هذا الكود ، تأخذ طريقة __init__ الخاصة بفئة Player أربع وسيطات: x و y و velocity_x و velocity_y. تحدد هذه الحجج الموضع الأولي وسرعة كائن اللاعب.

تستدعي طريقة __init__ أيضًا طريقة super () .__ init __ () ، وهي طريقة __init__ لفئة Sprite الأصلية. يعد هذا ضروريًا لأن فئة Player هي فئة فرعية من فئة Sprite ، وتقوم طريقة __init__ لفئة Sprite بإعداد بعض السمات التي تحتاجها جميع الكائنات المتحركة.

إضافة سمات وطرق للتحكم في السلوك

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

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

على سبيل المثال ، قد ترغب في إضافة طريقة للتحكم في حركة الكائن ، مثل طريقة move_left () التي تقلل سرعة الكائن على المحور x.

فيما يلي مثال على فئة Sprite المعدلة التي تتضمن هذه السمات والطرق الإضافية:

فصللاعب(pygame.sprite. شبح):
def__فيه__(self، x، y، velocity_x، velocity_y):
ممتاز().__فيه__()
الذات.position = (x، y)
الذات.velocity = (velocity_x، velocity_y)

defتحديث(الذات):
الذات.position = (الذات.موضع[0] + الذات.سرعة[0], الذات.موضع[1] + الذات.سرعة[1])

defيرسم(ذاتي ، سطح):
القزم.يرسم.دائرة(سطح, (255, 0, 0), الذات.موضع, 10)

defتحرك يسارا(الذات):
الذات.velocity = (-1, الذات.سرعة[1])

defتحرك يمينا(الذات):
الذات.velocity = (1, الذات.سرعة[1])

لاستخدام فئة Player في لعبة Pygame الخاصة بك ، ستحتاج إلى إنشاء مثيل للفئة واستدعاء أساليبها حسب الحاجة.

ابدأ بإنشاء نافذة ونسخة من كائن اللاعب:

# تهيئة Pygame
pygame.init ()

# تعيين حجم النافذة
window_size = (640, 480)

# إنشاء نافذة
window = pygame.display.set_mode (window_size)

# إنشاء كائن لاعب
لاعب = لاعب (320, 240, 0, 0)

ثم حدد حلقة اللعبة الرئيسية التي تتعامل مع أحداث وتحديثات لوحة المفاتيح وترسم الكائن. عندما تضغط على مفاتيح الأسهم لليسار أو لليمين ، يتحرك الكائن في الاتجاه المقابل.

# حلقة اللعبة الرئيسية
بينماحقيقي:
# التعامل مع الأحداث
ل حدث في pygame.event.get ():
لو event.type == pygame. يترك:
pygame.quit ()
sys.exit ()

لو event.type == pygame. زر أسفل:
لو event.key == pygame. K_LEFT:
player.move_left ()
أليف event.key == pygame. K_RIGHT:
player.move_right ()

# تحديث كائن اللاعب
player.update ()

# مسح النافذة
window.fill ((255, 255, 255))

# ارسم كائن اللاعب
player.draw (نافذة)

# تحديث العرض
pygame.display.update ()

باستخدام البرنامج الناتج ، ستتمكن من التحكم في كائن اللاعب ومراقبته وهو يرسم على الشاشة في مواضع مختلفة:

تحميل وعرض رسومات Sprite باستخدام وحدة الصورة

الآن بعد أن أصبح لديك فئة Sprite أساسية بها سمات وطرق للتحكم في السلوك ، فربما تريد إضافة بعض الرسومات إلى الكائن الخاص بك. تسهل وحدة صور Pygame تحميل الصور وعرضها على الشاشة.

لتحميل صورة ، ستحتاج إلى استخدام الدالة pygame.image.load () ، التي تأخذ مسار ملف كوسيطة وتعيد كائن Surface. يمكنك بعد ذلك تعيين كائن Surface هذا إلى سمة كائن ، مثل self.image ، والتي يمكنك استخدامها لرسم الكائن على الشاشة.

على سبيل المثال ، إليك كيفية تحميل صورة وتعيينها لكائن:

يستورد القزم

فصللاعب(pygame.sprite. شبح):
def__فيه__(self، x، y، velocity_x، velocity_y، image_path):
ممتاز().__فيه__()
الذات.position = (x، y)
الذات.velocity = (velocity_x، velocity_y)
الذات.image = pygame.image.load (image_path)

defتحديث(الذات):
الذات.position = (الذات.موضع[0] + الذات.سرعة[0], الذات.موضع[1] + الذات.سرعة[1])

defيرسم(ذاتي ، سطح):
سطح.blit(الذات.صورة, الذات.موضع)

defتحرك يسارا(الذات):
الذات.velocity = (-1, الذات.سرعة[1])

defتحرك يمينا(الذات):
الذات.velocity = (1, الذات.سرعة[1])

تحدد هذه الشفرة فئة المشغل التي توسع فئة العفريت في Pygame وتتضمن سمات للموضع والسرعة و وكذلك طرق تحديث موضع الكائن ورسمه على الشاشة والتحكم فيه حركة.

يمكنك التحقق من هذا GitHub repo للحصول على الكود الكامل!

تحسين إدارة Sprite باستخدام فئة Sprite

توفر فئة Sprite حاوية مناسبة لجميع سمات وسلوكيات شخصية اللعبة ، مما يسهل عملية التحديث والرسم والتحكم في الكائن على الشاشة.

من خلال تنفيذ فئة Sprite في لعبة Pygame ، يمكنك تحسين التجربة العامة للاعبين وتبسيط عملية التطوير بنفسك.