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

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

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

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

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

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

ابدأ باستيراد وحدة PyGame الضرورية وتهيئتها.

يستورد القزم

pygame.init ()

بعد ذلك ، قم بإعداد الشاشة وإنشاء لاعب وكائنات العدو باستخدام القزم. مستطيل () وظيفة.

# إعداد الشاشة
الشاشة = pygame.display.set_mode ((800, 600))

# قم بإعداد الألوان
أسود = (0, 0, 0)
أبيض = (255, 255, 255)

# قم بإعداد مستطيل اللاعب وكائن العدو
لاعب = pygame. مستطيل (350, 500, 50, 50)
العدو = القزم. مستطيل (350, 0, 50, 50)

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

instagram viewer
تصادم بين اللاعب والعدو، ورسم كائنات اللعبة على الشاشة.

# قم بإعداد حلقة اللعبة
تشغيل = حقيقي

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

# املأ الشاشة باللون الأبيض
ملء الشاشة (أبيض)

# حرك مستطيل اللاعب
مفاتيح = pygame.key.get_pressed ()

لو مفاتيح [pygame. K_LEFT]:
player.x - = 5

لو مفاتيح [pygame. K_RIGHT]:
player.x + = 5

لو مفاتيح [pygame. K_UP]:
player.y - = 5

لو مفاتيح [pygame. K_DOWN]:
player.y + = 5

# تحقق من الاصطدام بين اللاعب والعدو
لو player.colliderect (العدو):
تشغيل = خطأ شنيع

# ارسم مستطيل اللاعب وكائن العدو على الشاشة
pygame.draw.rect (شاشة ، أسود ، مشغل)
pygame.draw.rect (شاشة ، أسود ، عدو)

# تحديث الشاشة
pygame.display.update ()

# إنهاء اللعبة
pygame.quit ()

أعداء مباشرون نحو اللاعب

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

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

# احسب المسافة بين العدو واللاعب
Distance_x = player.x - العدو. x
Distance_y = player.y - العدو
المسافة = (Distance_x ** 2 + المسافة ص ** 2) ** 0.5

# حرك العدو نحو اللاعب
السرعة = 2

لو المسافة! 0:
العدو.x + = السرعة * المسافة_س / المسافة
العدو. y + = السرعة * المسافة_ص / المسافة

قم بترتيب حركة العدو بشكل عشوائي على الشاشة

يمكنك أيضًا جعل العدو يتحرك بشكل عشوائي على الشاشة لجعل اللعبة أكثر صعوبة.

للقيام بذلك ، قم بإنشاء اتجاه عشوائي للعدو للتحرك باستخدام الوحدة العشوائية في Python. استخدم ال خيار() وظيفة لتحديد اتجاه عشوائي من قائمة الاتجاهات التي يمكن للعدو التحرك فيها. ثم قم بتحديث موقع العدو بناءً على الاتجاه المختار.

يستورد عشوائي

# حرك العدو بشكل عشوائي على الشاشة
الاتجاه = اختيار عشوائي (['غادر', 'يمين', 'أعلى', 'تحت'])

لو الاتجاه == 'غادر':
العدو. x - = 5
أليف الاتجاه == 'يمين':
العدو. x + = 5
أليف الاتجاه == 'أعلى':
العدو. y - = 5
أليف الاتجاه == 'تحت':
العدو. y + = 5

حركة العدو القائمة على القرب

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

إذا كانت المسافة أقل من قيمة معينة ، اجعل العدو يتحرك باتجاه اللاعب. هذا يجعل اللعبة أكثر إستراتيجية ويجبر اللاعب على أن يكون أكثر حذراً في تحركاته.

# حرك العدو باتجاه اللاعب إذا كان اللاعب قريبًا
السرعة = 2

لو المسافة < 300:
لو المسافة! 0:
العدو.x + = السرعة * المسافة_س / المسافة
العدو. y + = السرعة * المسافة_ص / المسافة

العدو يتهرب من هجمات اللاعبين

يمكنك أيضًا جعل العدو يتفادى حركة اللاعب. سيحاول العدو تجنب اللاعب بالتحرك بشكل عمودي على موقع اللاعب.

لتحقيق ذلك ، احسب متجه الوحدة تجاه المشغل باستخدام مسافة _x و المسافة _ ص المحسوبة مسبقًا. ثم احسب المتجه العمودي لتحريك العدو بشكل عمودي على متجه الوحدة. أخيرًا ، احسب حاصل الضرب القياسي للمتجه العمودي ومتجه الوحدة لتحديد اتجاه حركة العدو.

لتنفيذ ذلك ، أضف مقتطف الشفرة أدناه بعد حساب المسافة.

السرعة = 2

لو المسافة < 400:
لو المسافة! 0:
# احسب متجه الوحدة تجاه اللاعب
unit_vector_x = المسافة_x / المسافة
unit_vector_y = المسافة_ص / المسافة

# احسب المتجه العمودي
perpendicular_vector_x = -unit_vector_y
perpendicular_vector_y = unit_vector_x

# احسب حاصل الضرب القياسي للمتجه العمودي و
# حتى النصر
dot_product = عمودي_vector_x * unit_vector_x
+ perpendicular_vector_y * unit_vector_y

# حرك العدو بشكل عمودي على متجه الوحدة
لو dot_product> 0:
العدو.x + = السرعة * عمودي_فكتور_س
العدو. y + = السرعة * عمودي_توجيه_ص
آخر:
العدو.x - = السرعة * عمودي_فكتور_س
العدو. y - = السرعة * عمودي_فكتور

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

إضافة ميزات إضافية

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

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

# أضف عدة أعداء يتحركون بشكل عشوائي على الشاشة
أعداء = []

ل أنا في يتراوح(5):
العدو = القزم. Rect (random.randint (عشوائي.0, 750) و random.randint (0, 550), 50,
50)

أعداء.انضم (العدو)

# أضف العقبات التي يجب على اللاعب تجنبها
عقبة = pygame. مستطيل (200, 250, 50, 50)

# قم بإعداد حلقة اللعبة
الساعة = pygame.time. ساعة()
تشغيل = حقيقي

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

# املأ الشاشة باللون الأبيض
ملء الشاشة (أبيض)

# حرك مستطيل اللاعب
مفاتيح = pygame.key.get_pressed ()

لو مفاتيح [pygame. K_LEFT]:
player.x - = 5
لو مفاتيح [pygame. K_RIGHT]:
player.x + = 5
لو مفاتيح [pygame. K_UP]:
player.y - = 5
لو مفاتيح [pygame. K_DOWN]:
player.y + = 5

# حرك الأعداء بشكل عشوائي على الشاشة
ل العدو في الأعداء:
الاتجاه = اختيار عشوائي (['غادر', 'يمين', 'أعلى', 'تحت'])

لو الاتجاه == 'غادر':
العدو. x - = 5
أليف الاتجاه == 'يمين':
العدو. x + = 5
أليف الاتجاه == 'أعلى':
العدو. y - = 5
أليف الاتجاه == 'تحت':
العدو. y + = 5

# تحقق من الاصطدام بين اللاعب والعدو
لو player.colliderect (العدو):
تشغيل = خطأ شنيع

# ارسم مستطيل اللاعب وكائنات العدو والعائق الموجود عليه
# الشاشة
pygame.draw.rect (شاشة ، أسود ، مشغل)

ل العدو في الأعداء:
pygame.draw.rect (شاشة ، أسود ، عدو)

pygame.draw.rect (شاشة ، أسود ، عقبة)

# تحديث الشاشة
pygame.display.update ()

# ضبط معدل عرض الإطارات للعبة
على مدار الساعة.60)

# إنهاء اللعبة
pygame.quit ()

عزز تجربة الألعاب الخاصة بك مع الأعداء

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