Menu
CoddyTech

الدوال

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

أصبحت أرقام النجمة محفوظة في الصنف الآن، لكن القواعد الخاصة بها، مثل كيفية سقوطها وكيفية رسمها، ما زالت ضمن الحلقة. تُسمى الدوال المكتوبة داخل الصنف طرائق، وهي تضع القواعد بجوار البيانات:

class Star:
    # __init__ كما كان من قبل

    def update(self):
        self.y += self.speed
        if self.y > 480:
            self.y = 0

    def draw(self, screen):
        pygame.draw.circle(screen, (255, 255, 255), (self.x, self.y), 4)

المعامل الأول لكل طريقة هو self، أي الكائن الذي تعمل عليه. تستدعي طريقةً على كائن باستخدام نقطة، ويُمرَّر Surface الخاص بـ pygame مثل أي وسيط آخر:

star.update()
star.draw(screen)

تُقرأ الحلقة الرئيسية الآن على أنها ما يحدث في الإطار: حدِّث النجمة، ثم ارسمها. تكاد كائنات الألعاب في برامج pygame تمتلك دائمًا هاتين الطريقتين، update وdraw.

challenge icon

التحدي

متوسط
  1. أضف طريقة update(self) إلى Star: فهي تضيف self.speed إلى self.y وتعيد النجمة إلى y = 0 عندما تتجاوز قيمة self.y 480.
  2. أضف draw(self, screen): لرسم الدائرة البيضاء ذات نصف القطر 4 عند (self.x, self.y).
  3. في الحلقة، استدعِ star.update()، وبعد التعبئة، استدعِ star.draw(screen).

جرّب بنفسك

import pygame

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

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


star = Star(320, 0)

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()
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

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

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