خودآزمایی و بالا بردن سطح بازی
خودآزمایی
۱۴-۱- فشردن P برای شروع بازی: از آنجایی که هجوم بیگانگان از ورودی صفحهکلید برای هدایت سفینه استفاده میکند، ایجاد امکان آغاز بازی با فشردن یک کلید سودمند خواهد بود. کدی اضافه کنید که به کاربر اجازه دهد بازی را فشار دادن P شروع کند. جابهجا کردن کدهایی از _check_play_button() به متد _start_game() ممکن است مفید باشد تا بتوان آنها را از _check_play_button() و _check_keydown_events() فراخواند.
۱۴-۲- تمرین هدفگیری: در کنارهی راست صفحه مستطیلی بسازید که با سرعت ثابت بالا و پایین میرود. سپس یک سفینه سمت چپ تصویر ظاهر کنید که بازیکن بتواند آن را بالا و پایین کند و به مستطیل متحرّک شلّیک کند. یک دکمهی Play برای شروع بازی اضافه کنید و زمانی که تیر بازیکن سه بار خطا رفت بازی را تمام کنید و دکمه را دوباره نمایش دهید. به بازیکن اجازه دهید که بازی را با دکمهی Play دوباره شروع کند.
بالا بردن سطحِ بازی
در بازی فعلی به محض این که بازیکن کلّ یک ناوگان را نابود کند، به مرحلهی جدیدی وارد میشود امّا میزان مشکل بودن بازی تغییری نمیکند. بیایید برای هیجانانگیز و چالشیتر کردن بازی سرعت آن را پس از هر بار خالی شدن صفحه بیشتر کنیم.
تغییر دادن تنظیمات سرعت
ابتدا ساختار کلاس Settings را دوباره طوری مرتّب میکنیم که تنظیمات بازی به دو بخش ثابت و متغیّر تقسیم شوند. همچنین مطمئن میشویم که تنظیمات متغیّر با آغاز یک بازی جدید بازنشانی میشوند. این متد __init__() برای settings.py است:
|
|
مقداردهی اوّلیّهی تنظیمات ثابت را مانند قبل در متد __init__() انجام میدهیم. تنظیمی به نام speedup_scale اضافه میکنیم که میزان سریع شدن بازی را کنترل میکند: مقدار 2 سرعت بازی را با بالا رفتن مرحلهی بازی دوبرابر میکند؛ مقدار 1 سرعت بازی را ثابت نگه میدارد. مقداری مثل 1.1 سرعت بازی را به اندازهای افزایش میدهد که بازی چالشی باشد امّا غیرممکن نشود. سرانجام متد initialize_dynamic_settings() را فرامیخوانیم تا مشخّصههایی را که باید در طول برنامه تغییر کنند مقداردهی اوّلیّه کنیم.
این کد متد initialize_dynamic_settings() است:
این متد مقدارهای اوّلیّهی مربوط به سفینه، گلوله و سرعت موجودات بیگانه را تعیین میکند. این سرعتها را همگام با پیشرفت بازیکن در بازی افزایش میدهیم و با آغاز مجدّد آن، مقدار آنها را بازنشانی میکنیم. fleet_direction را هم در این متد آوردهایم تا کاری کنیم که موجودات بیگانه در ابتدای یک بازی جدید همیشه به راست حرکت کنند. نیازی به افزایش مقدار fleet_drop_speed نیست چون زمانیکه موجودات بیگانه در عرض صفحه سریعتر حرکت میکنند، حرکت به سمت پایین آنها هم سریع خواهد بود.
برای این که با ورود بازیکن به مرحلهای جدید سرعت سفینه، گلولهها و موجودات بیگانه را افزایش دهیم متد جدیدی به نام increase_speed() مینویسیم:
برای افزایش سرعت هر یک از این عناصر بازی سرعت آنها را در speedup_scale ضرب میکنیم.
با منهدم شدن آخرین موجود بیگانهی یک ناوگان ضرباهنگ بازی را با فراخوانی increase_speed() در _check_bullet_alien_collisions() افزایش میدهیم:
تغییر مقدار تنظیمات سرعت ship_speed، alien_speed و bullet_speed برای سرعت بخشیدن به کلّ بازی کافیست!