مقدمه
در این درس، ما با افزودن سیستم سطحبندی، بازی را چالشبرانگیزتر و جذابتر میکنیم. با هر بار که بازیکن تمام بیگانگان یک ناوگان را از بین میبرد، بازی باید سختتر شود. ما این کار را با افزایش سرعت سفینه، گلولهها و بیگانگان انجام خواهیم داد.
آموزش پایتون
در این درس، ما با افزودن سیستم سطحبندی، بازی را چالشبرانگیزتر و جذابتر میکنیم. با هر بار که بازیکن تمام بیگانگان یک ناوگان را از بین میبرد، بازی باید سختتر شود. ما این کار را با افزایش سرعت سفینه، گلولهها و بیگانگان انجام خواهیم داد.
ابتدا، باید تنظیمات بازی خود را به دو بخش تقسیم کنیم: تنظیمات ثابت که در طول بازی تغییر نمیکنند (مانند ابعاد صفحه) و تنظیمات دینامیک که با پیشرفت در مراحل بازی تغییر میکنند (مانند سرعتها). ما یک متد جدید به نام initialize_dynamic_settings در کلاس Settings ایجاد میکنیم.
class Settings:
# ... (other settings) ...
def __init__(self):
# ... (static settings) ...
self.speedup_scale = 1.1
self.initialize_dynamic_settings()
def initialize_dynamic_settings(self):
"""Initialize settings that change throughout the game."""
self.ship_speed = 1.5
self.bullet_speed = 3.0
self.alien_speed = 1.0
# fleet_direction of 1 represents right; -1 represents left.
self.fleet_direction = 1
def increase_speed(self):
"""Increase speed settings."""
self.ship_speed *= self.speedup_scale
self.bullet_speed *= self.speedup_scale
self.alien_speed *= self.speedup_scale
ما یک متغیر speedup_scale برای کنترل نرخ افزایش سرعت تعریف کردهایم. متد increase_speed سرعت تمام عناصر بازی را بر اساس این مقیاس افزایش میدهد.
حالا باید در کلاس AlienInvasion هر زمان که یک ناوگان جدید ایجاد میشود (چه در شروع بازی و چه پس از پاکسازی کامل صفحه)، تنظیمات سرعت را به مقادیر اولیه برگردانیم.
# In _check_play_button():
if button_clicked and not self.game_active:
# Reset the game settings.
self.settings.initialize_dynamic_settings()
# ...
# In _check_bullet_alien_collisions():
if not self.aliens:
# ...
self.settings.increase_speed()
وقتی بازی از نو شروع میشود (با کلیک روی دکمه Play)، ما با فراخوانی initialize_dynamic_settings سرعت را ریست میکنیم. اما زمانی که تمام بیگانگان یک ناوگان از بین میروند، ما متد increase_speed را فراخوانی میکنیم تا بازی برای مرحله بعد سختتر شود.
با افزودن یک سیستم سطحبندی پویا، ما یک لایه جدید از چالش و جذابیت را به بازی خود اضافه کردیم. بازی اکنون با پیشرفت بازیکن، به تدریج سختتر میشود و او را برای ادامه دادن ترغیب میکند. در درس پایانی این فصل و این پروژه، به سراغ «سیستم امتیازدهی» خواهیم رفت و امتیاز بازیکن، بالاترین امتیاز و شماره مرحله فعلی را روی صفحه نمایش خواهیم داد.