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

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

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

ابدأ بإعداد نافذة Pygame أساسية وإضافة كائن لاعب إلى جانب بعض الأنظمة الأساسية. يمكنك أيضًا تنفيذ حركة اللاعب الأساسية باستخدام مفاتيح الأسهم أو باستخدام مدخلات اللمس.

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

قم بإنشاء ملف جديد باسم لعبة بسيطة وأضف رمز لعبتك الأساسية.

أضف كائنات متعددة متحركة

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

object_width, object_height = 30, 30
object_speed_range = (2, 7)
objects = []

defcreate_random_object():
return

instagram viewer
{
'x': random.randint(0, screen_width - object_width),
'y': random.randint(0, screen_height - object_height),
'speed': random.randint(*object_speed_range)
}

for _ in range(5):
objects.append(create_random_object())

defdraw_object(obj):
obj_dim = (obj['x'], obj['y'], object_width, object_height)
pygame.draw.rect(screen, WHITE, obj_dim)

# Game loop
while running:
screen.fill((0, 0, 0))

#... (previous code)

for obj in objects:
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

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

تطبيق خوارزمية الحركة العشوائية

في الوقت الحالي ، تتحرك الأجسام المتحركة العشوائية فقط في خط أفقي مستقيم. لجعل حركتهم غير متوقعة ، يمكنك إضافة خوارزمية حركة عشوائية.

# Random Movement Algorithm
defupdate_random_movement(obj):
# Change the direction randomly
if random.random() < 0.01:
obj['speed'] = -obj['speed']

# Game loop
while running:
#... (previous code)

for obj in objects:
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

update_random_movement(obj)
draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

اجعل الكائنات تتحرك نحو اللاعب

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

import math

# Objects Moving Towards Player
defmove_towards_player(obj):
player_center_x = player_x + player_width // 2
player_center_y = player_y + player_height // 2
object_center_x = obj['x'] + object_width // 2
object_center_y = obj['y'] + object_height // 2

angle1 = player_center_y - object_center_y
angle2 = player_center_x - object_center_x

angle = math.atan2(angle1, angle2)
obj['x'] += obj['speed'] * math.cos(angle)
obj['y'] += obj['speed'] * math.sin(angle)

# Game loop
while running:
#... (previous code)

for obj in objects:
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

move_towards_player(obj)
draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

اجعل الكائنات تتحرك فقط عندما يدخل اللاعب إلى المناطق المحيطة

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

# Objects Start to Move When Player Enters Surroundings
surrounding_distance = 150

defshould_start_moving(obj):
surrounded1 = abs(obj['x'] - player_x) < surrounding_distance
surrounded2 = abs(obj['y'] - player_y) < surrounding_distance
return surrounded1 or surrounded2

# Game loop
while running:
#... (previous code)

for obj in objects:
if should_start_moving(obj):
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

update_random_movement(obj)
move_towards_player(obj)

draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

كشف الاصطدام والتفاعل

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

# Collision Detection and Interaction
defis_collision(obj):

condition1 = player_x + player_width > obj['x']
condition2 = player_x < obj['x'] + object_width
condition3 = player_y + player_height > obj['y']
condition4 = player_y < obj['y'] + object_height
return ( condition1 and condition2 and condition3 and condition4)

# Game loop
while running:
#... (previous code)

for obj in objects:
if should_start_moving(obj):
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

update_random_movement(obj)
move_towards_player(obj)

if is_collision(obj):
objects.remove(obj)

draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

بما في ذلك الميزات الإضافية

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

التهديف والتقدم

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

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

شكا من السلطة والمكافآت

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

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

عدو الذكاء الاصطناعي والسلوك

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

تنوع سلوكيات الأعداء سيبقي اللاعبين على أصابع قدمهم ويمنع اللعبة من أن تصبح رتيبة.

المقتنيات والمكافآت

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

أفضل الممارسات لإضافة كائنات عشوائية متحركة

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

صعوبة الموازنة

يجب موازنة أنماط السرعة والحركة للأجسام المتحركة العشوائية بعناية لتقديم تحدٍ عادل. تجنب جعل الأشياء تتحرك بسرعة كبيرة أو بشكل متقطع ، فقد يؤدي ذلك إلى إحباط اللاعبين وجعل اللعبة تبدو غير عادلة.

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

تحسين الأداء

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

قلل من العمليات الحسابية غير الضرورية لضمان لعب سلس وسريع الاستجابة ، خاصة على الأجهزة القديمة أو الأقل قوة.

الاختبار والتعديل والتبديل

اختبر لعبتك بدقة مع سيناريوهات مختلفة للتأكد من أن الكائنات المتحركة العشوائية تتفاعل بشكل صحيح مع عناصر اللعبة الأخرى. اختبار التصادمات والتفاعلات مع اللاعب وأي سلوكيات حركية خاصة.

اضبط سرعة الكائنات وسلوكها وأنماطها بناءً على ملاحظات اختبار اللعب لتحقيق تجربة اللعب المثلى.

العشوائية مع التحكم

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

تضمن العشوائية الخاضعة للرقابة أن تظل اللعبة صعبة وممتعة دون أن تصبح فوضوية للغاية.

جعل الألعاب أكثر تفاعلاً مع الكائنات المتحركة العشوائية

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