Menu
CoddyTech

سفينة الدورية

جزء من قسم الكائنات والصور في رحلة Pygame على Coddy. الدرس 29 من 36.

حان وقت بناء لعبة كاملة: دورية النجوم. تهبط موجات من سفن الأعداء من أعلى الشاشة. تقوم سفينتك بدورية في أسفل النافذة، وتتحرك يمينًا ويسارًا وتطلق أشعة الليزر إلى أعلى. دمّر كل موجة لتفوز؛ وإذا سمحت لثلاثة أعداء بالمرور أو اصطدمت بهم، تنتهي اللعبة.

كل عنصر في اللعبة سيكون كائنًا رسوميًا: اللاعب، وأشعته، والأعداء وانفجاراتهم. نبدأ باللاعب، كما في الفصل 4:

class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = ship_image
        self.rect = self.image.get_rect(midbottom=(320, 470))

حمّل ship_image مرة واحدة، بعد إنشاء النافذة. تحرّك update المستطيل Rect باستخدام مفاتيح الأسهم، وتُبقيه داخل النافذة. تستدعي الحلقة الرئيسية player.update() وترسم السفينة.

يطوّر هذا الفصل البرنامج نفسه درسًا بعد درس، لذا التزم بالأسماء التي تحددها المهام: إذ تستخدمها عمليات التحقق للعثور على أجزاء اللعبة.

challenge icon

التحدي

متوسط
  1. حمّل assets/images/ship.png إلى ship_image.
  2. اكتب class Player(pygame.sprite.Sprite): الصورة ship_image، والمستطيل بحيث يكون منتصف حافته السفلية عند (320, 470)، ودالة update تحرّكه 6 بكسلات في كل إطار باستخدام اليسار واليمين، وتقيّده بحدود النافذة.
  3. أنشئ player = Player()؛ واستدعِ player.update() في كل إطار، ثم ارسم player.image عند player.rect بعد التعبئة.

جرّب بنفسك

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Star Patrol")
clock = pygame.time.Clock()

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((12, 14, 30))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

جميع دروس الكائنات والصور

تدرّب بنفسك: Playground لـ Pygame