Menu
CoddyTech

قائمة من الكائنات

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

نجمتان مسمّاتان لا تصنعان سماءً. أربعون نجمة تحتاج إلى قائمة: أنشئ الكائنات داخل حلقة وأضف كلًّا منها إلى القائمة.

stars = []
for i in range(40):
    x = random.randint(0, 639)
    y = random.randint(0, 479)
    speed = random.randint(1, 3)
    stars.append(Star(x, y, speed))

بعد ذلك، تحدّث حلقة واحدة جميع النجوم، وترسمها حلقة أخرى:

for star in stars:
    star.update()

داخل for، يشير star في كل مرة إلى كائن مختلف، لذا فإن star.update() يحرّك تلك النجمة بسرعتها الخاصة. إضافة مئة نجمة أخرى لا تتطلب سوى تغيير رقم واحد؛ ويظلّ رمز التحديث والرسم كما هو.

أنشئ القائمة مرة واحدة قبل حلقة اللعبة. القائمة التي تُنشأ داخل الحلقة تكون قائمة جديدة من نجوم جديدة في كل إطار، وتعود جميعها إلى مواضع البداية، لذلك لا يتحرك أي شيء أبدًا.

challenge icon

التحدي

متوسط
  1. أضف import random في الأعلى.
  2. قبل الحلقة، أنشئ stars: قائمةً تضم 40 كائنًا من Star، لكل منها قيمة x عشوائية من 0 إلى 639، وقيمة y عشوائية من 0 إلى 479، وسرعة عشوائية من 1 إلى 3.
  3. في الحلقة، حدّث كل نجمة في stars، وارسم كل نجمة بعد التعبئة. أزل slow وfast.

جرّب بنفسك

import pygame

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

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

    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)


slow = Star(200, 0, 1)
fast = Star(440, 0, 3)

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

    slow.update()
    fast.update()

    screen.fill((20, 22, 40))
    slow.draw(screen)
    fast.draw(screen)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconاختبر نفسك

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

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

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