نمایش امتیازها و ساختن تابلوی امتیازات
نمایش امتیازها
برای نمایش امتیازات روی صفحه ابتدا کلاسی به نام Scoreboard میسازیم. فعلاً این کلاس تنها امتیاز کنونی را نمایش میدهد امّا در نهایت از آن برای نمایش بیشترین امتیاز، سطح و تعداد سفینههای باقیمانده هم استفاده خواهیم کرد.
این اوّلین بخش کلاس است؛ آن را به نام scoreboard.py ذخیره کنید:
|
|
چون قرار است کلاس متنهایی را روی صفحه بنویسد کار را به وارد کردن ماژول pygame.font شروع میکنیم. سپس به متد __init__() پارامتر ai_game را میدهیم تا به شیءهای settings، screen و stats دسترسی داشته باشد و به کمک آنها مقدارهای مورد نظر ما را گزارش کند. سپس رنگ متن را تعیین کرده و نمونهای از شیء فونت میسازیم.
متنی را که قرار است نمایش داده شود با فراخوانی prep_score() به تصویر تبدیل میکنیم:
|
|
در prep_score() مقدار عددی stats.score را به رشته تبدیل میکنیم، سپس این رشته را به render() میدهیم که آن را به تصویر تبدیل میکند. برای نمایش واضح امتیاز روی صفحه رنگ پسزمینه و رنگ متن را به render() میدهیم.
امتیاز را در گوشهی بالا-راست صفحه قرار میدهیم و با بیشتر شدن آن و افزایش عرض عدد، آن را به سمت چپ گسترش میدهیم. برای این مطمئن باشیم که امتیاز با کنارهی راست صفحه همتراز است، یک rect به نام score_rect میسازیم و حاشیهی راست آن را در فاصلهی ۲۰ پیکسلی کنارهی راست صفحه قرار میدهیم. سپس لبهی بالای آن را ۲۰ پیکسل پایینتر از کنارهی بالایی صفحه تنظیم میکنیم.
سپس متدی به نام show_score() میسازیم تا تصویر تولیدشدهی امتیاز را نشان دهد:
این متد تصویر امتیاز را در موقعیّتی که score_rect تعیین میکند، روی صفحه رسم میکند.
ساختن تابلوی امتیازات
برای نمایش امتیاز در AlienInvasion نمونهای از Scoreboard میسازیم. ابتدا عبارتهای import را بهروز میکنیم:
سپس نمونهای از Scoreboard در __init__() میسازیم:
سپس در _update_screen() تابلوی امتیازات را روی صفحه نمایش میدهیم:
متد show_score() را درست پیش از رسم دکمهی Play میکشیم. اگر اکنون هجوم بیگانگان را اجرا کنید عدد صفر باید در گوشهی بالا سمت راست صفحه نمایان شود. (تا اینجا پیش از توسعهی سیستم امتیازدهی فقط مطمئن میشویم که امتیاز به درستی روی صفحه نمایش داده میشود.) شکل ۱۴-۲ امتیاز را هنگام نمایش پیش از شروع بازی نشان میدهد.
شکل ۱۴-۲: امتیاز در گوشهی بالا راست صفحه نمایان میشود.
در ادامه به هر موجود بیگانه امتیازی نسبت میدهیم!