رسم دکمه روی صفحه و آغاز بازی
از کلاس Button برای ساختن دکمهی Play در AlienInvasion استفاده میکنیم. ابتدا عبارتهای import را بهروز میکنیم:
چون فقط یک دکمهی Play نیاز داریم آن را در متد __init__() کلاس AlienInvasion میسازیم. این کد را در پایان __init__() قرار میدهیم:
این کد نمونهای از Button با عنوان Play میسازد امّا این کار دکمه را روی تصویر رسم نمیکند. متد draw_button() را در _update_screen() صدا میکنیم:
برای این که این دکمه را روی دیگر عناصر صفحه نمایش دهیم، آن را پس از رسم تمام عنصرها امّا پیش از نمایش نهایی روی صفحه رسم میکنیم. متد نمایش را در یک بلوک if قرار میدهیم تا دکمه فقط وقتی که بازی در حالت غیرفعّال است دیده شود.
اکنون اگر هجوم بیگانگان را اجرا کنید دکمهی Play را وسط صفحه خواهید دید، مشابه شکل ۱۴-۱.
شکل ۱۴-۱: در زمان غیرفعّال بودن بازی دکمهی Play پدیدار میشود.
آغازِ بازی
برای آغاز شدنِ بازی با فشرده شدن Play، بلوک elif زیر را به انتهای _check_events() اضافه کنید تا رخدادهای ماوس را روی دکمه زیر نظر بگیرید:
اگر بازیکن روی هر جایی از صفحه کلیک کند پایگیم یک رخداد MOUSEBUTTONDOWN تشخیص میدهد ولی ما میخواهیم تنها زمانی که به این رخدادها پاسخ بدهد که بر روی دکمهی Play رخ داده باشند. برای رسیدن به چنین هدفی از pygame.mouse.get_pos() استفاده میکنیم که با فشرده شدن دکمهی ماوس، یک چندتایی شامل مختصّات x و y نشانگر آن برمیگرداند. این مقدارها را به متد جدید _check_play_button() میفرستیم.
این کد _check_play_button() است که ترجیح دادم آن را بعد از _check_events() بیاورم:
برای بررسی تلاقی محل کلیک شدن ماوس و محدودهی تعریفشده در rect دکمهی Play از متد collidepoint() در rect استفاده میکنیم. اگر چنین اتّفاقی افتاده باشد مقدار game_active را True میکنیم و بازی آغاز میشود!
تا اینجا باید قادر باشید که یک بازی کامل را شروع کنید. با پایان یافتنِ بازی مقدار game_active باید False شود و دکمهی Play دوباره پدیدار شود.