Menu
CoddyTech

חלקיק

חלק מהיחידה צליל ותחושת משחק במסלול ה-Pygame של Coddy. שיעור 8 מתוך 23.

ניצוצות, אבק, עשן וקונפטי מורכבים מחלקיקים: הרבה דברים זעירים שעפים החוצה, חיים זמן קצר ונעלמים. חלקיק צריך רק כמה מספרים: איפה הוא נמצא, כמה רחוק הוא זז בכל פריים וכמה פריימים נותרו לו לחיות. מילון מכיל אותם:

{"x": 240, "y": 180, "vx": 2, "vy": -3, "life": 30}

vx ו-vy הם המהירות שלו: 2 פיקסלים ימינה ו-3 למעלה בכל פריים. שמרו כל חלקיק ברשימה אחת, ובכל פריים הזיזו את כולם והפחיתו פריים אחד מחייהם:

for p in particles:
    p["x"] += p["vx"]
    p["y"] += p["vy"]
    p["life"] -= 1

ציירו כל חלקיק כל עוד נותרו לו יותר מ-0 פריימים לחיות, כעיגול קטן:

for p in particles:
    if p["life"] > 0:
        pygame.draw.circle(screen, (255, 160, 60), (p["x"], p["y"]), 3)

לחלקיק אין תמונה ואין מחלקה. הוא צורך מעט משאבים, ולכן משחק יכול להכיל מאות חלקיקים בו-זמנית.

challenge icon

אתגר

קל

גרום לפולט האפור שבמרכז לירות ניצוץ:

  1. בעת לחיצה על Space, הוסף את {"x": 240, "y": 180, "vx": 2, "vy": -3, "life": 30} אל particles.
  2. בכל פריים, הזז כל חלקיק לפי vx ו-vy שלו, והפחת 1 מה-life שלו.
  3. צייר כל חלקיק שהחיים שלו מעל 0 כעיגול כתום בצבע (255, 160, 60) וברדיוס 3.

נסו בעצמכם

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Sparks")
clock = pygame.time.Clock()

particles = []

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

    screen.fill((30, 30, 46))
    pygame.draw.circle(screen, (120, 120, 140), (240, 180), 8)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

כל השיעורים ביחידה צליל ותחושת משחק

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