بازی های آرکید خود را با معرفی دشمنان ادویه کنید.
دشمنان نقش مهمی در ایجاد بازی های جذاب و چالش برانگیز دارند. آنها موانع و دشمنانی را برای بازیکنان فراهم می کنند و تجربه بازی را هیجان انگیزتر می کنند. کتابخانه Arcade Python یک راه ساده برای ترکیب دشمنان در بازی های شما ارائه می دهد.
یک بازی ساده بسازید
قبل از شروع، مطمئن شوید که پیپ را روی دستگاه خود نصب کرده اید. برای نصب کتابخانه arcade از این دستور استفاده کنید:
pip install arcade
پس از آن، با ایجاد یک بازی ساده شروع کنید که در آن بازیکن می تواند با استفاده از کلیدهای جهت دار به چپ و راست حرکت کند.
کد استفاده شده در این مقاله در این مخزن GitHub موجود است و برای استفاده شما تحت مجوز MIT رایگان است.
import arcade
# Window dimensions
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
# Player attributes
PLAYER_RADIUS = 25
PLAYER_SPEED = 5
class GameWindow(arcade.Window):
def __init__(self, width, height):
super().__init__(width, height)
arcade.set_background_color(arcade.color.WHITE)
self.player_x = width // 2
def on_draw(self):
arcade.start_render()
arcade.draw_circle_filled(self.player_x, PLAYER_RADIUS, PLAYER_RADIUS, arcade.color.BLUE)
def on_key_press(self, key, modifiers):
if key == arcade.key.LEFT:
self.player_x -= PLAYER_SPEED
elif key == arcade.key.RIGHT:
self.player_x += PLAYER_SPEED
def update(self, delta_time):
pass
def main():
window = GameWindow(SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
if __name__ == "__main__":
main()
ایجاد یک دشمن ساده
برای ایجاد دشمنی که در صورت برخورد بازیکن را می کشد، دایره دیگری روی صفحه ایجاد کنید. در تابع on_draw می توانید این دایره دشمن را رسم کنید و در روش آپدیت، برخورد را بررسی کنید. همچنین می توانید از اسپرایت برای دشمنان استفاده کنید.
# Add to GameWindow class
class GameWindow(arcade.Window):
# ...
def __init__(self, width, height):
# ...
# Enemy attributes
self.enemy_x = width // 2
self.enemy_y = height - PLAYER_RADIUS
self.enemy_radius = 20
def on_draw(self):
# ...
arcade.draw_circle_filled(self.enemy_x, self.enemy_y, self.enemy_radius, arcade.color.RED)
def update(self, delta_time):
if self.is_collision(self.player_x, self.player_y, self.enemy_x, self.enemy_y, PLAYER_RADIUS, self.enemy_radius):
print("Game Over!")
def is_collision(self, x1, y1, x2, y2, radius1, radius2):
distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
radius_sum_squared = (radius1 + radius2) ** 2
return distance_squared <= radius_sum_squared
ساختن دشمن دنبال بازیکن
در برخی از بازی ها، دشمنان می توانند بازیکن را تعقیب کنند و یک عنصر پویا به گیم پلی اضافه کنند. برای ایجاد یک دشمن زیر، باید موقعیت آن را بر اساس موقعیت بازیکن به روز کنید. هر زمان که بازیکن حرکت کند، دشمن در همان جهت حرکت می کند. شما می توانید با تغییر روش به روز رسانی به این امر دست یابید. یک فایل جدید با نام armiq-follow-player.py ایجاد کنید و کد را با به روز رسانی های زیر اضافه کنید:
# Add to GameWindow class
class GameWindow(arcade.Window):
# ...
def update(self, delta_time):
if self.player_x < self.enemy_x:
self.enemy_x -= PLAYER_SPEED
elif self.player_x > self.enemy_x:
self.enemy_x += PLAYER_SPEED
if self.is_collision(self.player_x, self.player_y,
self.enemy_x, self.enemy_y,
PLAYER_RADIUS, ENEMY_RADIUS):
print("Game Over!")
def is_collision(self, x1, y1, x2, y2, radius1, radius2):
distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
radius_sum_squared = (radius1 + radius2) ** 2
return distance_squared <= radius_sum_squared
در زیر خروجی است:
اضافه کردن گلوله های دشمن
برای ایجاد دشمنی که گلوله شلیک می کند، یک کلاس Bullet و یک لیست برای پیگیری گلوله های فعال ایجاد کنید. دشمن به صورت دوره ای یک گلوله جدید ایجاد می کند و موقعیت خود را به روز می کند. یک فایل جدید به نام bullets.py ایجاد کنید و کد را با به روز رسانی های زیر اضافه کنید:
# Add to GameWindow class
class Bullet:
def __init__(self, x, y, radius, speed):
self.x = x
self.y = y
self.radius = radius
self.speed = speed
def update(self):
self.y -= self.speed
class GameWindow(arcade.Window):
# ...
def __init__(self, width, height):
# ...
# Enemy attributes
self.bullets = []
self.bullet_radius = 5
self.bullet_speed = 3
self.bullet_cooldown = 60 # Number of frames between bullet spawns
self.bullet_timer = 0
def on_draw(self):
# ...
for bullet in self.bullets:
arcade.draw_circle_filled(bullet.x, bullet.y,
self.bullet_radius, arcade.color.BLACK)
def update(self, delta_time):
# ...
self.bullet_timer += 1
if self.bullet_timer >= self.bullet_cooldown:
self.bullets.append(Bullet(self.enemy_x, self.enemy_y - self.enemy_radius,
self.bullet_radius, self.bullet_speed))
self.bullet_timer = 0
for bullet in self.bullets:
bullet.update()
if self.is_collision(self.player_x, self.player_y, self.enemy_x,
self.enemy_y, PLAYER_RADIUS, ENEMY_RADIUS):
print("Game Over!")
def is_collision(self, x1, y1, x2, y2, radius1, radius2):
distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
radius_sum_squared = (radius1 + radius2) ** 2
return distance_squared <= radius_sum_squared
در زیر خروجی است:
اضافه کردن امتیاز سلامتی برای دشمنان
در بسیاری از بازیها، دشمنان میتوانند امتیاز سلامت (HP) داشته باشند که به آنها اجازه میدهد تا قبل از شکست، چندین ضربه را حفظ کنند. افزودن نکات سلامتی به دشمنان می تواند عناصر استراتژیک گیم پلی را معرفی کند و حس پیشرفت و چالش را ایجاد کند. یک فایل جدید با نام heath-point.py ایجاد کنید و کد را با به روز رسانی های زیر اضافه کنید:
# Window dimensions
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
# Player attributes
PLAYER_RADIUS = 25
PLAYER_SPEED = 5
# Enemy attributes
ENEMY_RADIUS = 20
ENEMY_HEALTH = 100
class GameWindow(arcade.Window):
def __init__(self, width, height):
super().__init__(width, height)
arcade.set_background_color(arcade.color.WHITE)
self.player_x = width // 2
self.player_y = height // 2
self.enemy_x = width // 2
self.enemy_y = height - PLAYER_RADIUS
self.enemy_health = ENEMY_HEALTH
print(self.enemy_health)
def on_draw(self):
arcade.start_render()
arcade.draw_circle_filled(self.player_x,
self.player_y,
PLAYER_RADIUS,
arcade.color.BLUE)
if self.enemy_health > 0:
arcade.draw_circle_filled(self.enemy_x,
self.enemy_y,
ENEMY_RADIUS,
arcade.color.RED)
def update(self, delta_time):
if self.is_collision(self.player_x, self.player_y,
self.enemy_x, self.enemy_y,
PLAYER_RADIUS, ENEMY_RADIUS):
self.enemy_health -= 10
print(self.enemy_health)
ثابت ENEMY_HEALTH دارای مقدار 100 برای نشان دادن نقاط سلامت اولیه دشمن است. زمانی که بازیکن با دشمن برخورد می کند، می توانید از سلامتی دشمن چند امتیاز کسر کنید. برای نمایش مقدار سلامت به روز شده، می توانید یک شی متن self.health_text را چاپ کنید که سلامت فعلی دشمن را نشان می دهد.
با گنجاندن نکات سلامتی برای دشمنان، می توانید لایه ای از چالش و استراتژی را برای بازیکنان معرفی کنید. مقدار سلامت نمایش داده شده بازخورد بصری را ارائه می دهد و به بازیکنان اجازه می دهد تا سلامت باقی مانده دشمن را ردیابی کنند.
علاوه بر این، میتوانید کد را با اضافه کردن منطق و تصاویر بیشتر، مانند نمایش نوارهای سلامت یا اجرای شرایط شکست زمانی که سلامت دشمن به صفر میرسد، گسترش دهید.
بهترین روش ها برای ایجاد دشمن
هنگام طراحی دشمنان برای بازی خود، مهم است که چندین روش برتر را در نظر بگیرید تا مطمئن شوید که آنها به یک تجربه گیم پلی چالش برانگیز و لذت بخش کمک می کنند. در اینجا چند دستورالعمل وجود دارد که باید هنگام ایجاد دشمن رعایت کنید:
صفات متنوع
دشمنانی با ویژگی های مختلف مانند سرعت، اندازه، سلامت و قدرت حمله ایجاد کنید. انواع مختلف دشمن باید سطوح مختلفی از دشواری داشته باشند و از بازیکنان میخواهند که استراتژیهای خود را بر این اساس تطبیق دهند. با معرفی ترکیبی از ویژگی های دشمن، می توانید گیم پلی بازی را تازه و جذاب نگه دارید.
رفتارهای منحصر به فرد
به هر نوع دشمن الگوهای رفتاری منحصر به فرد خود را بدهید. برخی از دشمنان ممکن است به شیوه ای قابل پیش بینی حرکت کنند، در حالی که برخی دیگر ممکن است حرکات پیچیده یا نامنظمتری از خود نشان دهند. الگوریتمهای هوش مصنوعی دشمن را در نظر بگیرید تا رفتار آنها را هوشمندانهتر و غیرقابلپیشبینیتر کنید و یک لایه چالش اضافی برای بازیکنان اضافه کنید.
نکات بهداشتی (HP)
نکات بهداشتی را برای دشمنان به کار ببرید تا حس پیشرفت و دوام را ایجاد کنید. این به دشمنان اجازه میدهد تا قبل از شکست چندین ضربه را حفظ کنند. با اختصاص مقادیر مختلف HP به انواع مختلف دشمن، می توانید یک سلسله مراتب دشواری ایجاد کنید و بازیکنان را تشویق کنید تا اهداف خود را استراتژی و اولویت بندی کنند.
بازی ها را با دشمنان سرگرم کننده تر کنید
افزودن دشمنان به بازی های شما می تواند تجربه گیم پلی را به میزان قابل توجهی افزایش دهد. آنها چالش ها را معرفی می کنند و به بازیکنان انگیزه می دهند تا مهارت های خود را بهبود بخشند. دشمنان می توانند به اشکال مختلف، از موانع ساده گرفته تا دشمنان پیچیده مبتنی بر هوش مصنوعی باشند. با پیاده سازی موثر دشمنان، می توانید بازی های خود را برای بازیکنان جذاب تر و لذت بخش تر کنید.