Menu
CoddyTech

התפרצות של חלקיקים

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

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

for i in range(20):
    particles.append({
        "x": x,
        "y": y,
        "vx": random.uniform(-3, 3),
        "vy": random.uniform(-3, 3),
        "life": random.randint(20, 40),
    })

random.uniform(-3, 3) הוא מספר עשרוני אקראי בין -3 ל-3, ולכן חלקיק יכול לנוע לכל כיוון, לאט או מהר. randint ייתן רק מספרים שלמים, וההתפרצות תעוף בכמה קווים ישרים.

קריאות אקראיות חייבות להופיע בתוך הלולאה. אם בוחרים vx פעם אחת לפני הלולאה, כל 20 החלקיקים יקבלו אותה מהירות: הם יעופו יחד כנקודה אחת.

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

לחיצה על העכבר היא אירוע pygame.MOUSEBUTTONDOWN, ו-event.pos היא הנקודה שעליה לחצו.

challenge icon

אתגר

בינוני

לחיצה יוצרת חלקיק אחד שעולה. הפכו אותו להתפרצות:

  1. בלחיצה, הוסיפו 20 חלקיקים בנקודה שעליה לחצתם.
  2. תנו לכל אחד vx ו־vy מתוך random.uniform(-3, 3), ו־life מתוך random.randint(20, 40).

נסו בעצמכם

import random
import pygame

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

particles = []

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.MOUSEBUTTONDOWN:
            x, y = event.pos
            particles.append({"x": x, "y": y, "vx": 0, "vy": -2, "life": 30})

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

    screen.fill((20, 20, 36))
    for p in particles:
        if p["life"] > 0:
            pygame.draw.circle(screen, (255, 160, 60), (p["x"], p["y"]), 3)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconבחנו את עצמכם

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

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

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