در نهایت، این خط کد زیر را بلافاصله بعد از عبارت while (بخش 4) اضافه کنید تا مقدار badtimer برای هر فریم کاهش یابد:
badtimer-=1
با اجرای بازی تمام این کد را امتحان کنید. اکنون باید گیم پلی واقعی را مشاهده کنید – می توانید شلیک کنید، حرکت کنید، بپیچید و گورکن ها سعی می کنند به سمت قلعه ها حمله کنند.
badtimer-=1
با اجرای بازی تمام این کد را امتحان کنید. اکنون باید گیم پلی واقعی را مشاهده کنید – می توانید شلیک کنید، حرکت کنید، بپیچید و گورکن ها سعی می کنند به سمت قلعه ها حمله کنند.
اما صبر کنید! چرا گورکن ها به قلعه ها آسیب نمی زنند؟ بیایید سریع کد این قسمت را اضافه کنیم. این کد را درست قبل از index+= 1 در حلقه اول در بخش 6.3 اضافه کنید:
این کد نسبتاً ساده است. اگر مقدار x گورکن کمتر از 64 در سمت راست باشد، آن گورکن را حذف کرده و مقدار سلامتی یا همان جان بازی را به صورت تصادفی بین 5 تا 20 کاهش می دهد (بعداً، مقدار جان یا سلامتی را روی صفحه نمایش خواهید دید) اگر برنامه اجرا کنید، باید گورکن های مهاجم، هنگام برخورد با قلعه ناپدید شوند. اگرچه شما نمی توانید آن را ببینید، اما گورکن ها در واقع از جان شما کم می کنند.
This media is not supported in your browser
VIEW IN TELEGRAM
مرحله هفتم: برخورد تیر پیکان با گورکن
گورکن ها به قلعه شما حمله می کنند اما تیرهای شما تاثیری بر آنها ندارد! چگونه باید یک خرگوش از خانه خود دفاع کند؟
زمان آن است که پیکان ها را برای کشتن گورکن ها آماده کنید تا بتوانید از قلعه خود محافظت کرده و برنده بازی باشید! باید بررسی کرد که آیا تیر ها و گورکن ها با هم برخورد می کنند یا خیر؟ اگر برخورد انجام شود، پس گورکن و پیکان را حذف کنید و یک واحد را به نسبت دقت یا همان امتیاز خود اضافه کنید. درست بعد از بخش 6.3.1 ، این را اضافه کنید:
گورکن ها به قلعه شما حمله می کنند اما تیرهای شما تاثیری بر آنها ندارد! چگونه باید یک خرگوش از خانه خود دفاع کند؟
زمان آن است که پیکان ها را برای کشتن گورکن ها آماده کنید تا بتوانید از قلعه خود محافظت کرده و برنده بازی باشید! باید بررسی کرد که آیا تیر ها و گورکن ها با هم برخورد می کنند یا خیر؟ اگر برخورد انجام شود، پس گورکن و پیکان را حذف کنید و یک واحد را به نسبت دقت یا همان امتیاز خود اضافه کنید. درست بعد از بخش 6.3.1 ، این را اضافه کنید:
در این کد تنها یک نکته مهم وجود دارد که باید به آن توجه کنید. دستور colliderect یک تابع PyGame است که بررسی می کند آیا دو مستطیل متقاطع هستند یا خیر. دو خط دیگر فقط آنچه را که در بالا توضیح داده شد انجام می دهند. اگر برنامه را اجرا کنید، در نهایت باید بتوانید گورکن ها را با شلیک پیکان بکشید.
مرحله هشتم: اضافه کردن متریک زمان و مقدار جان
بازی بسیار خوب پیشرفت می کند شما مهاجمان خود را دارید و مدافع خود را نیز دارید. اکنون تنها چیزی که شما نیاز دارید راهی برای حفظ امتیاز و نشان دادن عملکرد خوب خرگوش قهرمان است. ساده ترین راه برای انجام این کار اضافه کردن یک HUD (Heads Up Display) است که سطح سلامت فعلی قلعه ها را نشان می دهد. همچنین می توانید یک ساعت اضافه کنید تا نشان دهد که قلعه چقدر زنده مانده است. ابتدا ساعت را اضافه کنید. کد زیر را درست قبل از شروع قسمت شماره 7 اضافه کنید:
بازی بسیار خوب پیشرفت می کند شما مهاجمان خود را دارید و مدافع خود را نیز دارید. اکنون تنها چیزی که شما نیاز دارید راهی برای حفظ امتیاز و نشان دادن عملکرد خوب خرگوش قهرمان است. ساده ترین راه برای انجام این کار اضافه کردن یک HUD (Heads Up Display) است که سطح سلامت فعلی قلعه ها را نشان می دهد. همچنین می توانید یک ساعت اضافه کنید تا نشان دهد که قلعه چقدر زنده مانده است. ابتدا ساعت را اضافه کنید. کد زیر را درست قبل از شروع قسمت شماره 7 اضافه کنید:
کد بالا به سادگی یک فونت جدید با استفاده از قلم PyGame پیش فرض تنظیم شده روی اندازه 24 ایجاد می کند. سپس از آن فونت برای نمایش متن زمان بر روی سطح استفاده می شود. پس از آن، متن روی صفحه قرار می گیرد و ترسیم می شود. بعد نوار سلامتی health bar یا میزان جان را اضافه کنید. اما قبل از رسم health bar، باید تصاویر را برای نوار بارگذاری کنید. کد زیر را به انتهای بخش شماره 3 اضافه کنید
healthbar = pygame.image.load("resources/images/healthbar.png")
health = pygame.image.load("resources/images/health.png")
اولی تصویر قرمز رنگی است که برای نوار سلامت کامل استفاده می شود. تصویر دوم سبز است که برای نشان دادن سطح سلامت فعلی استفاده می شود. حالا کد زیر را بلافاصله بعد از بخش 6.4 (که به تازگی اضافه کرده اید) اضافه کنید تا نوار سلامت روی صفحه ترسیم شود:
# 6.5 - Draw health bar
screen.blit(healthbar, (5,5))
for health1 in range(healthvalue):
screen.blit(health, (health1+8,8))
کد ابتدا نوار سلامتی تمام قرمز را ترسیم می کند. سپس مقدار مشخصی از رنگ سبز را با توجه به عمر قلعه بر روی نوار می کشد، اگر برنامه را اجرا کنید، باید یک تایمر و یک نوار سلامتی داشته باشید.
health = pygame.image.load("resources/images/health.png")
اولی تصویر قرمز رنگی است که برای نوار سلامت کامل استفاده می شود. تصویر دوم سبز است که برای نشان دادن سطح سلامت فعلی استفاده می شود. حالا کد زیر را بلافاصله بعد از بخش 6.4 (که به تازگی اضافه کرده اید) اضافه کنید تا نوار سلامت روی صفحه ترسیم شود:
# 6.5 - Draw health bar
screen.blit(healthbar, (5,5))
for health1 in range(healthvalue):
screen.blit(health, (health1+8,8))
کد ابتدا نوار سلامتی تمام قرمز را ترسیم می کند. سپس مقدار مشخصی از رنگ سبز را با توجه به عمر قلعه بر روی نوار می کشد، اگر برنامه را اجرا کنید، باید یک تایمر و یک نوار سلامتی داشته باشید.
This media is not supported in your browser
VIEW IN TELEGRAM
مرحله نهم: برنده یا بازنده
اگر به مدت طولانی بازی کنید، حتی اگر میزان جان شما به صفر برسد، بازی همچنان ادامه دارد! و شما می توانید همچنان می توانید شلیک کنید. شما به نوعی سناریو برد/باخت نیاز دارید تا بازی ارزش بازی کردن را داشته باشد. بنابراین اجازه دهید شرایط برد و باخت و همچنین صفحه برد یا باخت را اضافه کنیم. این کار را با خارج شدن از حلقه اصلی و وارد شدن به یک حلقه برد/باخت انجام می دهید. در حلقه برد/باخت، باید بفهمید که کاربر برنده یا بازنده است و صفحه را مطابق آن نشان دهید. یک طرح کلی از سناریوهای برد/باخت می تواند بصورت زیر باشد:
اگر زمان تمام شد (90000 میلی ثانیه یا 90 ثانیه) پس:
اجرای بازی را متوقف کنید
تیجه بازی را 1 قرار دهید یعنی برنده شده اید
در صورت تخریب قلعه، موارد زیر را دنبال کنید:
اجرای بازی را متوقف کنید
نتیجه بازی را 0 قرار دهید یعنی بازنده شده اید
دقت را در هر آخر محاسبه کنید و این خطوط را به انتهای game.py اضافه کنید:
اگر به مدت طولانی بازی کنید، حتی اگر میزان جان شما به صفر برسد، بازی همچنان ادامه دارد! و شما می توانید همچنان می توانید شلیک کنید. شما به نوعی سناریو برد/باخت نیاز دارید تا بازی ارزش بازی کردن را داشته باشد. بنابراین اجازه دهید شرایط برد و باخت و همچنین صفحه برد یا باخت را اضافه کنیم. این کار را با خارج شدن از حلقه اصلی و وارد شدن به یک حلقه برد/باخت انجام می دهید. در حلقه برد/باخت، باید بفهمید که کاربر برنده یا بازنده است و صفحه را مطابق آن نشان دهید. یک طرح کلی از سناریوهای برد/باخت می تواند بصورت زیر باشد:
اگر زمان تمام شد (90000 میلی ثانیه یا 90 ثانیه) پس:
اجرای بازی را متوقف کنید
تیجه بازی را 1 قرار دهید یعنی برنده شده اید
در صورت تخریب قلعه، موارد زیر را دنبال کنید:
اجرای بازی را متوقف کنید
نتیجه بازی را 0 قرار دهید یعنی بازنده شده اید
دقت را در هر آخر محاسبه کنید و این خطوط را به انتهای game.py اضافه کنید:
اولین دستور if بررسی می کند که زمان به پایان رسیده باشد. مورد دوم بررسی می کند که آیا قلعه تخریب شده است یا خیر. مورد سوم نسبت دقت شما را محاسبه می کند. پس از آن، یک عبارت سریع برنده یا باخت را بررسی می کند و تصویر صحیح را نمایش می دهد.
البته، اگر می خواهید تصاویر را برای صفحه های برد و باخت نمایش دهید، ابتدا باید این تصاویر بارگذاری شوند. بنابراین کد زیر را به انتهای بخش شماره 3 اضافه کنید:
gameover = pygame.image.load("resources/images/gameover.png")
youwin = pygame.image.load("
البته، اگر می خواهید تصاویر را برای صفحه های برد و باخت نمایش دهید، ابتدا باید این تصاویر بارگذاری شوند. بنابراین کد زیر را به انتهای بخش شماره 3 اضافه کنید:
gameover = pygame.image.load("resources/images/gameover.png")
youwin = pygame.image.load("
و در بخش چهار تغییرات زیر را انجام دهید.
# 4 - keep looping through
while 1:
badtimer-=1
به جای کدهای بالا کدهای پایین را جایگزین کنید.
# 4 - keep looping through
running = 1
exitcode = 0
while running:
badtimer-=1
# 4 - keep looping through
while 1:
badtimer-=1
به جای کدهای بالا کدهای پایین را جایگزین کنید.
# 4 - keep looping through
running = 1
exitcode = 0
while running:
badtimer-=1