قم بإضفاء الإثارة على ألعاب الأركيد الخاصة بك عن طريق تقديم الأعداء.

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

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

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

نقطة تثبيت الممرات

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

الكود المستخدم في هذه المقالة متوفر في هذا مستودع جيثب وهو مجاني لك لاستخدامه بموجب ترخيص MIT.

يستورد ممر

# أبعاد النافذة
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# سمات اللاعب
PLAYER_RADIUS = 25
PLAYER_SPEED = 5

فصلGameWindow(ممر. نافذة او شباك):
def__فيه__(ذاتي ، عرض ، ارتفاع):
سوبر () .__ الحرف الأول __ (العرض ، الارتفاع)
arcade.set_background_color (arcade.color. أبيض)
self.player_x = العرض // 2

defon_draw(الذات):
arcade.start_render ()
arcade.draw_circle_filled (self.player_x ، PLAYER_RADIUS ، PLAYER_RADIUS ، arcade.color. أزرق)

instagram viewer

defon_key_press(ذاتي ، مفتاح ، معدِّلات):
لو مفتاح == arcade.key. غادر:
self.player_x - = PLAYER_SPEED
أليف مفتاح == arcade.key. يمين:
self.player_x + = PLAYER_SPEED

defتحديث(ذاتي ، delta_time):
يمر

defرئيسي():
نافذة = GameWindow (SCREEN_WIDTH ، SCREEN_HEIGHT)
arcade.run ()

لو __name__ == "__رئيسي__":
رئيسي()

خلق عدو بسيط

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

# أضف إلى فئة GameWindow

فصلGameWindow(ممر. نافذة او شباك):
# ...

def__فيه__(ذاتي ، عرض ، ارتفاع):
# ...

# صفات العدو
self.enemy_x = العرض // 2
self.enemy_y = الارتفاع - PLAYER_RADIUS
self.enemy_radius = 20

defon_draw(الذات):
# ...
arcade.draw_circle_filled (self.enemy_x، self.enemy_y، self.enemy_radius، arcade.color. أحمر)

defتحديث(ذاتي ، delta_time):
لو self.is_collision (self.player_x، self.player_y، self.enemy_x، self.enemy_y، PLAYER_RADIUS، self.enemy_radius):
مطبعة("انتهت اللعبة!")

defis_collision(النفس ، x1 ، y1 ، x2 ، y2 ، نصف القطر 1 ، نصف القطر 2):
Distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
radius_sum_squared = (radius1 + radius2) ** 2
يعود Distance_squared <= radius_sum_squared

جعل العدو يتبع اللاعب

في بعض الألعاب ، يمكن للأعداء مطاردة اللاعب وإضافة عنصر ديناميكي إلى طريقة اللعب. لإنشاء عدو تالي ، تحتاج إلى تحديث موقعه بناءً على موقع اللاعب. حينما يتحرك اللاعبيتحرك العدو في نفس الاتجاه. يمكنك تحقيق ذلك عن طريق تعديل تحديث طريقة. قم بإنشاء ملف جديد باسم العدو -follow-player.py وأضف الكود مع التحديثات أدناه:

# أضف إلى فئة GameWindow

فصلGameWindow(ممر. نافذة او شباك):
# ...

defتحديث(ذاتي ، delta_time):
لو self.player_x self.enemy_x - = PLAYER_SPEED
أليف self.player_x> self.enemy_x:
self.enemy_x + = PLAYER_SPEED

لو self.is_collision (self.player_x ، self.player_y ،
العدو_الذاتي_x ، العدو_الذاتي ،
PLAYER_RADIUS ، ENEMY_RADIUS):
مطبعة("انتهت اللعبة!")

defis_collision(النفس ، x1 ، y1 ، x2 ، y2 ، نصف القطر 1 ، نصف القطر 2):
Distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
radius_sum_squared = (radius1 + radius2) ** 2
يعود Distance_squared <= radius_sum_squared

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

مضيفا الرصاص العدو

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

# أضف إلى فئة GameWindow

فصلرصاصة:
def__فيه__(ذاتي ، س ، ص ، نصف قطر ، سرعة):
self.x = x
self.y = ذ
نصف القطر الذاتي = نصف القطر
self.speed = السرعة

defتحديث(الذات):
self.y - = self.speed

فصلGameWindow(ممر. نافذة او شباك):
# ...

def__فيه__(ذاتي ، عرض ، ارتفاع):
# ...

# صفات العدو
self.bullets = []
self.bullet_radius = 5
self.bullet_speed = 3
self.bullet_cooldown = 60# عدد الإطارات بين تولد الرصاصة
self.bullet_timer = 0

defon_draw(الذات):
# ...
ل رصاصة في الرصاص الذاتي:
arcade.draw_circle_filled (bullet.x، bullet.y،
self.bullet_radius، arcade.color. أسود)

defتحديث(ذاتي ، delta_time):
# ...

self.bullet_timer + = 1
لو self.bullet_timer> = self.bullet_cooldown:
self.bullets.append (رصاصة (self.enemy_x، self.enemy_y - self.enemy_radius،
self.bullet_radius، self.bullet_speed))
self.bullet_timer = 0

ل رصاصة في الرصاص الذاتي:
bullet.update ()
لو self.is_collision (self.player_x، self.player_y، self.enemy_x،
العدو الذاتي ، PLAYER_RADIUS ، ENEMY_RADIUS):
مطبعة("انتهت اللعبة!")

defis_collision(النفس ، x1 ، y1 ، x2 ، y2 ، نصف القطر 1 ، نصف القطر 2):
Distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
radius_sum_squared = (radius1 + radius2) ** 2
يعود Distance_squared <= radius_sum_squared

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

إضافة نقاط صحية للأعداء

في العديد من الألعاب ، يمكن للأعداء امتلاك نقاط صحية (HP) ، مما يسمح لهم بالحصول على ضربات متعددة قبل هزيمتهم. يمكن أن تؤدي إضافة نقاط الصحة إلى الأعداء إلى إدخال عناصر إستراتيجية في اللعب وتوفر إحساسًا بالتقدم والتحدي. قم بإنشاء ملف جديد باسم heath-point.py وأضف الكود مع التحديثات أدناه:

# أبعاد النافذة
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# سمات اللاعب
PLAYER_RADIUS = 25
PLAYER_SPEED = 5

# صفات العدو
ENEMY_RADIUS = 20
ENEMY_HEALTH = 100

فصلGameWindow(ممر. نافذة او شباك):
def__فيه__(ذاتي ، عرض ، ارتفاع):
سوبر () .__ الحرف الأول __ (العرض ، الارتفاع)
arcade.set_background_color (arcade.color. أبيض)
self.player_x = العرض // 2
self.player_y = الارتفاع // 2
self.enemy_x = العرض // 2
self.enemy_y = الارتفاع - PLAYER_RADIUS
self.enemy_health = ENEMY_HEALTH
طباعة (self.enemy_health)
defon_draw(الذات):
arcade.start_render ()
arcade.draw_circle_filled (self.player_x ،
self.player_y ،
PLAYER_RADIUS ،
الممرات. أزرق)
لو عدو_العدو> 0:
arcade.draw_circle_filled (self.enemy_x،
العدو الذاتي ،
ENEMY_RADIUS ،
الممرات. أحمر)

defتحديث(ذاتي ، delta_time):
لو self.is_collision (self.player_x ، self.player_y ،
العدو_الذاتي_x ، العدو_الذاتي ،
PLAYER_RADIUS ، ENEMY_RADIUS):
self.enemy_health - = 10
طباعة (self.enemy_health)

ال ENEMY_HEALTH الثابت له قيمة 100 لتمثيل نقاط الصحة الأولية للعدو. عندما يصطدم اللاعب بالعدو ، يمكنك خصم بعض النقاط من صحة العدو. لعرض القيمة الصحية المحدثة ، يمكنك طباعة كائن نصي self.health_text هذا يدل على صحة العدو الحالي.

من خلال دمج النقاط الصحية للأعداء ، يمكنك تقديم طبقة من التحدي والاستراتيجية للاعبين. توفر القيمة الصحية المعروضة ملاحظات مرئية وتسمح للاعبين بتتبع صحة العدو المتبقية.

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

أفضل الممارسات لخلق الأعداء

عند تصميم أعداء للعبتك ، من المهم التفكير في العديد من أفضل الممارسات للتأكد من أنها تساهم في تجربة لعب مليئة بالتحديات والممتعة. فيما يلي بعض الإرشادات التي يجب اتباعها عند تكوين أعداء:

سمات متنوعة

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

سلوكيات فريدة

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

نقاط الصحة (HP)

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

اجعل الألعاب أكثر متعة مع الأعداء

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