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בחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה ספרייטים ותמונות

תרגלו בעצמכם: Pygame אונליין