Menu
CoddyTech

Ein Partikel

Teil des Abschnitts Sound und Spielgefühl der Pygame-Journey von Coddy. Lektion 8 von 23.

Funken, Staub, Rauch und Konfetti bestehen aus Partikeln: vielen winzigen Dingen, die herausfliegen, kurze Zeit leben und verschwinden. Ein Partikel braucht nur ein paar Zahlen: wo es sich befindet, wie weit es sich pro Frame bewegt und wie viele Frames es noch zu leben hat. Ein Dictionary enthält diese Angaben:

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

vx und vy sind seine Geschwindigkeit: 2 Pixel nach rechts und 3 nach oben pro Frame. Speichere jedes Partikel in einer Liste und bewege sie in jedem Frame alle, während du von ihrer Lebensdauer einen Frame abziehst:

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

Zeichne jedes Partikel als kleinen Kreis, solange seine Lebensdauer über 0 liegt:

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

Ein Partikel hat weder ein Bild noch eine Klasse. Es ist ressourcenschonend, sodass ein Spiel Hunderte davon gleichzeitig haben kann.

challenge icon

Aufgabe

Einfach

Lass den grauen Emitter in der Mitte einen Funken abschießen:

  1. Wenn die Leertaste gedrückt wird, füge {"x": 240, "y": 180, "vx": 2, "vy": -3, "life": 30} zu particles hinzu.
  2. Bewege in jedem Frame jedes Partikel um sein vx und vy und verringere sein life um 1.
  3. Zeichne jedes Partikel, dessen Lebensdauer größer als 0 ist, als orangefarbenen Kreis mit dem Radius 3 und der Farbe (255, 160, 60).

Probier es selbst

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()

Alle Lektionen in Sound und Spielgefühl

Übe selbstständig: Pygame-Playground