Menu
CoddyTech

صنفك الأول

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

يتكوّن النجم من ثلاثة متغيرات: star_x وstar_y وstar_speed. هذا مناسب لنجم واحد؛ أما السماء الممتلئة بالنجوم فتحتاج إلى طريقة أفضل لإبقاء أرقام كل نجم معًا.

الصنف هو مخطط لنوع من الكائنات. يحمل كل كائن مُنشأ منه قيمه الخاصة، وتُسمّى هذه القيم السمات:

class Star:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.speed = 2


star = Star(320, 0)

ينشئ Star(320, 0) كائنًا جديدًا من الصنف Star. ثم تشغّل Python الدالة __init__ عليه، وهي الدالة داخل الصنف التي تهيّئ كل كائن جديد (الاسم الذي يتكوّن من شرطتين سفليتين على كل جانب هو الاسم الذي تبحث عنه Python)، باستخدام x = 320 وy = 0. داخلها، يشير self إلى الكائن الجديد، لذا تخزّن self.x = x القيمة 320 فيه. وخارج الصنف، يمكنك الوصول إلى القيمة نفسها باستخدام star.x، وتغييرها بالطريقة نفسها: star.y += star.speed.

تبدأ أسماء الأصناف بحرف كبير: Star هو المخطط، وstar نجم واحد أُنشئ منه.

challenge icon

التحدي

سهل
  1. اكتب صنفًا باسم Star يخزّن self.x وself.y وself.speed = 2 في __init__(self, x, y).
  2. استبدل المتغيرات الثلاثة بـ star = Star(320, 0).
  3. في الحلقة، استخدم star.y وstar.speed وstar.x بدلًا من المتغيرات القديمة.

جرّب بنفسك

import pygame

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

star_x = 320
star_y = 0
star_speed = 2

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

    star_y += star_speed
    if star_y > 480:
        star_y = 0

    screen.fill((20, 22, 40))
    pygame.draw.circle(screen, (255, 255, 255), (star_x, star_y), 4)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

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

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