مقدمه
اکنون که یک پنجره خالی برای بازی خود داریم، زمان آن است که اولین عنصر بازی، یعنی سفینه فضایی
بازیکن، را به آن اضافه کنیم. برای این کار، ابتدا باید یک تصویر مناسب برای سفینه پیدا کرده و سپس
با استفاده از Pygame، آن را بارگذاری و روی صفحه ترسیم کنیم.
ایجاد کلاس Ship
برای سازماندهی بهتر کد، تمام منطق و دادههای مربوط به سفینه را در یک کلاس جداگانه به نام Ship
قرار میدهیم. یک فایل جدید به نام ship.py ایجاد کنید.
ship.py
import pygame
class Ship:
"""A class to manage the ship."""
def __init__(self, ai_game):
"""Initialize the ship and set its starting position."""
self.screen = ai_game.screen
self.screen_rect = ai_game.screen.get_rect()
self.image = pygame.image.load('images/ship.bmp')
self.rect = self.image.get_rect()
self.rect.midbottom = self.screen_rect.midbottom
def blitme(self):
"""Draw the ship at its current location."""
self.screen.blit(self.image, self.rect)
در این کد، سازنده کلاس Ship یک ارجاع به نمونه فعلی کلاس AlienInvasion دریافت میکند تا به
صفحه اصلی بازی دسترسی داشته باشد. ما تصویر سفینه را با pygame.image.load() بارگذاری میکنیم.
در Pygame، تمام عناصر بازی مانند سفینه به عنوان یک مستطیل (rectangle) در نظر گرفته میشوند. پس
از بارگذاری تصویر، ما با متد get_rect() مستطیل دربرگیرنده آن را دریافت میکنیم. این به
ما اجازه میدهد تا به راحتی موقعیت عنصر را مدیریت کنیم. ما با استفاده از اتریبیوت midbottom
سفینه را در مرکز و پایین صفحه قرار میدهیم. متد blitme() نیز مسئول ترسیم تصویر سفینه روی
صفحه در موقعیت مشخص شده توسط self.rect است.
ادغام کلاس Ship با بازی
حالا باید کلاس Ship را در کلاس اصلی بازی AlienInvasion وارد کرده و از آن استفاده کنیم.
alien_invasion.py
...
from ship import Ship
class AlienInvasion:
def __init__(self):
self.ship = Ship(self)
def run_game(self):
while True:
self.screen.fill(self.bg_color)
self.ship.blitme()
pygame.display.flip()
...
ما در سازنده AlienInvasion، یک نمونه از Ship میسازیم. سپس، در حلقه اصلی بازی، پس از پر کردن
پسزمینه، متد blitme() سفینه را فراخوانی میکنیم تا تصویر آن روی صفحه ترسیم شود.
اگر اکنون بازی را اجرا کنید، خواهید دید که سفینه فضایی شما در پایین و مرکز پنجره بازی قرار گرفته
است.
در این درس، با ساختن یک کلاس مجزا برای سفینه و بارگذاری و ترسیم تصویر آن، اولین عنصر گرافیکی
بازی خود را به صفحه اضافه کردیم. یاد گرفتیم که چگونه در Pygame با تصاویر به عنوان سطوح مستطیلی
(rects) کار کرده و موقعیت آنها را مدیریت کنیم. در درس بعدی، به سراغ «هدایت کشتی» خواهیم رفت و
یاد میگیریم که چگونه به ورودیهای کیبورد کاربر واکنش نشان داده و سفینه را به چپ و راست حرکت
دهیم.