Cząsteczka
Część sekcji Dźwięk i odczucia z gry ścieżki Pygame w Coddy. Lekcja 8 z 23.
Iskry, kurz, dym i konfetti składają się z cząsteczek: wielu drobnych elementów, które wylatują, przez krótki czas pozostają w ruchu i znikają. Cząsteczka potrzebuje tylko kilku liczb: gdzie się znajduje, o ile przesuwa się w każdej klatce oraz ile klatek pozostało jej do końca istnienia. Przechowuje się je w słowniku:
{"x": 240, "y": 180, "vx": 2, "vy": -3, "life": 30}vx i vy określają jej prędkość: 2 piksele w prawo i 3 w górę w każdej klatce. Przechowuj wszystkie cząsteczki na jednej liście, a następnie w każdej klatce przesuwaj je wszystkie i odejmuj jedną klatkę od czasu ich życia:
for p in particles:
p["x"] += p["vx"]
p["y"] += p["vy"]
p["life"] -= 1Rysuj każdą cząsteczkę, dopóki jej czas życia jest większy od 0, jako małe kółko:
for p in particles:
if p["life"] > 0:
pygame.draw.circle(screen, (255, 160, 60), (p["x"], p["y"]), 3)Cząsteczka nie ma obrazu ani klasy. Jest lekka, więc gra może zawierać ich jednocześnie setki.
Wyzwanie
ŁatwySpraw, aby szary emiter pośrodku wystrzelił iskierkę:
- Po naciśnięciu klawisza spacji dodaj
{"x": 240, "y": 180, "vx": 2, "vy": -3, "life": 30}doparticles. - W każdej klatce przesuń każdą cząsteczkę o wartości
vxivy, a jejlifezmniejsz o 1. - Narysuj każdą cząsteczkę, której życie jest większe od 0, jako pomarańczowe kółko
(255, 160, 60)o promieniu 3.
Spróbuj swoich sił
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()
Wszystkie lekcje w sekcji Dźwięk i odczucia z gry
1Efekty dźwiękowe
Wczytywanie dźwiękuDźwięk w reakcji na zdarzenieGłośność dźwiękuDźwięki i przytrzymane klawisze4Wstrząs ekranu i błysk po trafieniu
Wstrząs ekranuBłysk po trafieniuPauza przy trafieniuNie przesadzajPoćwicz samodzielnie: Edytor online Pygame