به دنبال این هستید که بازی خود را با خطر کنترل کنید؟ زندگیها را به سلامتی تبدیل کنید و به گیمپلی خود ابعاد بیشتری اضافه کنید.
افزودن یک سیستم سلامت به بازی آرکید شما میتواند تجربه بازیکن را افزایش دهد و میتواند لایهای از چالش و تعامل اضافه کند. شما می توانید با نمایش سلامتی و مکانیک بازیکن برای آسیب و بهبود، تجربه گیم پلی فراگیرتری ایجاد کنید.
خوشبختانه، پیادهسازی یک سیستم سلامت در پایتون با استفاده از کتابخانه Arcade ساده است و تنها به چند مرحله نیاز دارد.
یک بازی ساده بسازید
ابتدا pip را روی دستگاه خود نصب کنید و از دستور زیر برای نصب کتابخانه آرکید استفاده کنید:
pip install arcade
پس از آن، با ایجاد یک بازی ساده با استفاده از کتابخانه Arcade شروع کنید. این بازی دارای یک شخصیت بازیکن است که می تواند به چپ، راست، بالا و پایین حرکت کند و یک شی دشمن که بازیکن را تهدید می کند.
کد استفاده شده در این مقاله در این مخزن GitHub موجود است و برای استفاده شما تحت مجوز MIT رایگان است.
یک فایل جدید با نام simple-game.py ایجاد کنید و کد زیر را اضافه کنید:
import arcade
# Set window dimensions
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
# Set player movement speed
PLAYER_MOVEMENT_SPEED = 5
white = arcade.color.WHITE
blue = arcade.color.BLUE
red = arcade.color.RED
class GameWindow(arcade.Window):
def __init__(self, width, height):
super().__init__(width, height)
arcade.set_background_color(white)
# Create player and enemy objects
self.player = arcade.SpriteCircle(30, blue)
self.enemy = arcade.SpriteCircle(30, red)
self.player.center_x = 100
self.player.center_y = 100
self.enemy.center_x = 400
self.enemy.center_y = 300
def on_draw(self):
arcade.start_render()
self.player.draw()
self.enemy.draw()
def update(self, delta_time):
pass
def on_key_press(self, key, modifiers):
if key == arcade.key.LEFT:
self.player.center_x -= PLAYER_MOVEMENT_SPEED
elif key == arcade.key.RIGHT:
self.player.center_x += PLAYER_MOVEMENT_SPEED
elif key == arcade.key.UP:
self.player.center_y += PLAYER_MOVEMENT_SPEED
elif key == arcade.key.DOWN:
self.player.center_y -= PLAYER_MOVEMENT_SPEED
def main():
game = GameWindow(SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
if __name__ == "__main__":
main()
شما باید پنجره ای حاوی دو کاراکتر را ببینید که با دایره های آبی و قرمز نشان داده شده است:
تعریف متغیرها و ثابت های مرتبط با سلامت
برای پیاده سازی نظام سلامت متغیرها و ثابت های مرتبط با سلامت را تعریف کنید. شما از آنها برای پیگیری وضعیت فعلی بازیکن و تعیین قوانین آسیب و بهبود استفاده خواهید کرد. کد زیر را در کلاس GameWindow اضافه کنید:
class GameWindow(arcade.Window):
def __init__(self, width, height):
# ...
# Health-related variables and constants
self.player_health = 100
# Health points healed per second
self.heal_rate = 1
# Timer for healing
self.heal_timer = 0
def update(self, delta_time):
# ...
# Update healing timer
self.heal_timer += delta_time
# Heal the player's health every 2 seconds
if self.heal_timer >= 2:
self.player_health += self.heal_rate
self.heal_timer = 0
# Ensure health doesn't exceed the maximum value
if self.player_health > 100:
self.player_health = 100
اجرای مکانیک آسیب و درمان
برای پیاده سازی آسیب و مکانیک های بهبود، برخورد بین بازیکن و دشمن را شناسایی کنید. در هنگام برخورد با دشمن سلامتی بازیکن را کاهش دهید و در صورت عدم برخورد هر 2 ثانیه سلامتی بازیکن را بهبود بخشید. متد update() را تغییر دهید و کد زیر را اضافه کنید:
class GameWindow(arcade.Window):
def __init__(self, width, height):
# ...
def update(self, delta_time):
# Detect collisions between player and enemy
if arcade.check_for_collision(self.player, self.enemy):
self.player_health -= 5
# ...
مدیریت مرگ بازیکن و سناریوهای بازی بیش از حد
برای مدیریت سناریوهای مرگ بازیکن و پایان بازی، بررسی کنید که آیا سلامت بازیکن به صفر یا کمتر رسیده است. اگر سلامتی به صفر رسید، بازیکن را مرده در نظر بگیرید و بازی را تمام کنید. متد update() را با کد زیر تغییر دهید:
class GameWindow(arcade.Window):
def __init__(self, width, height):
# ...
def update(self, delta_time):
# ...
# Check if player health is zero or below
if self.player_health <= 0:
# End the game
arcade.close_window()
# ...
تجسم نوار سلامت
یک نمایش تصویری از سلامت بازیکن می تواند تجربه گیم پلی را تا حد زیادی بهبود بخشد. یک نوار سلامت با استفاده از مستطیل ها برای نشان دادن سطح سلامت فعلی ایجاد کنید. یک فایل جدید با نام health-bar.py ایجاد کنید و کد را با به روز رسانی های زیر اضافه کنید:
class GameWindow(arcade.Window):
def __init__(self, width, height):
# ...
def on_draw(self):
arcade.start_render()
self.player.draw()
self.enemy.draw()
gray = arcade.color.LIGHT_GRAY
green = arcade.color.GREEN
# Draw health bar
arcade.draw_rectangle_filled(SCREEN_WIDTH // 2, 20,
SCREEN_WIDTH, 20, gray)
health_width = self.player_health / 100 * SCREEN_WIDTH
arcade.draw_rectangle_filled(health_width // 2, 20,
health_width, 20, green)
در زیر خروجی است:
از جمله ویژگی های اضافی
میتوانید با ویژگیهای بیشتر، مانند موارد زیر، سیستم سلامت را بیشتر ارتقا دهید.
نمایشگر سلامت عددی
علاوه بر نوار سلامت، می توانید سلامت باقی مانده را به عنوان یک مقدار عددی روی صفحه نمایش دهید. این یک نشانه دقیق از وضعیت سلامت بازیکن است. کد زیر را در متد on_draw() اضافه کنید:
# Inside the on_draw() method
black = arcade.color.BLACK
text = f"Health: {self.player_health}"
arcade.draw_text(text, 10, 10, black, 14)
پاور آپ های سلامت
برای معرفی پاور آپ های سلامتی، می توانید اشیاء خاصی ایجاد کنید که در برخورد با آنها سلامت بازیکن را افزایش می دهد. در اینجا مثالی از نحوه پیاده سازی این ویژگی آورده شده است:
# Inside the update() method
if arcade.check_for_collision(self.player, self.power_up):
self.player_health += 20
# Remove the power-up from the game
self.power_up.kill()
انواع مختلف دشمن
برای عمق بخشیدن به بازی خود، می توانید انواع مختلفی از دشمنان را معرفی کنید که سطوح مختلفی از آسیب را به بازیکن وارد می کنند. این یک عنصر استراتژیک را اضافه می کند و اجازه می دهد تا تجربیات گیم پلی متنوع تری داشته باشید. در اینجا پیاده سازی این ویژگی است:
# Inside the update() method
if arcade.check_for_collision(self.player, self.enemy):
if self.enemy.type == "weak":
self.player_health -= 5
elif self.enemy.type == "strong":
self.player_health -= 20
با گنجاندن این ویژگیهای اضافی در پیادهسازی سیستم سلامت خود، میتوانید تجربههای گیمپلی پویا و چالش برانگیزی را برای بازیکنان خود ایجاد کنید.
بهترین شیوه ها برای نظام سلامت
هنگام پیاده سازی یک سیستم سلامت در بازی آرکید خود، مهم است که بهترین شیوه ها را دنبال کنید تا مطمئن شوید که سیستم قوی و کارآمد است. در اینجا برخی از بهترین روش هایی که باید به خاطر داشته باشید آورده شده است:
آن را ماژولار کنید
عملکرد سیستم سلامت را در یک کلاس یا ماژول جداگانه نگه دارید تا آن را مدولار نگه دارید و به راحتی در پروژه های مختلف بازی قابل استفاده مجدد باشد. این امر سازماندهی کد و تفکیک نگرانی ها را ترویج می کند.
اعتبار سنجی ورودی و پادمان ها
برای جلوگیری از تخصیص مقادیر سلامت نامعتبر کدتان، اعتبار سنجی ورودی را اجرا کنید. هنگامی که آسیب یا بهبودی رخ می دهد، همان اقدامات حفاظتی باید در برابر ارزش های بهداشتی نامعتبر محافظت کند.
مکانیسم ذخیره و بارگذاری
یک مکانیسم ذخیره و بارگذاری که شامل وضعیت سلامت بازیکن است را اجرا کنید. این به بازیکنان این امکان را می دهد که حتی پس از خروج از بازی، بازی را با پیشرفت دست نخورده از جمله سلامتی خود از سر بگیرند.
تست و مدیریت خطا
اجرای سیستم سلامت را به طور کامل آزمایش کنید تا صحت و اعتبار آن را تأیید کنید. از تکنیک های مناسب رسیدگی به خطا برای رسیدگی موثر به استثناها و موارد لبه استفاده کنید.
بازخورد بهداشتی مداوم
بازخورد ثابت و واضحی را در مورد وضعیت سلامت بازیکن به بازیکن ارائه دهید. میتوانید جلوههای صوتی، نشانههای بصری یا حتی بازخورد لمسی را اضافه کنید تا اطمینان حاصل کنید که بازیکنان از وضعیت سلامتی خود در بازی مطلع هستند و میتوانند در طول بازی تصمیمات آگاهانه بگیرند.
با پیروی از این بهترین شیوهها، میتوانید یک سیستم سلامت قوی و مؤثر ایجاد کنید که ضمن حفظ کیفیت و خوانایی کد، تجربه گیمپلی بازی آرکید شما را افزایش میدهد.
با سیستم سلامت بازی ها را سرگرم کننده تر کنید
افزودن یک سیستم سلامت به بازی شما می تواند به طور قابل توجهی تجربه کلی بازیکن را بهبود بخشد. این عنصر ریسک و چالش را معرفی می کند و باعث می شود گیم پلی جذاب تر و با ارزش تر شود.
نمایش بصری سلامت به بازیکنان اجازه می دهد تا به راحتی وضعیت فعلی خود را ارزیابی کنند، غوطه وری را افزایش دهند و تصمیم گیری استراتژیک را افزایش دهند.