Una particella
Fa parte della sezione Suoni e sensazioni di gioco del percorso Pygame di Coddy. Lezione 8 di 23.
Scintille, polvere, fumo e coriandoli sono composti da particelle: tante piccole cose che schizzano fuori, vivono per poco tempo e svaniscono. Per una particella bastano pochi numeri: dove si trova, quanto si sposta a ogni fotogramma e quanti fotogrammi le restano da vivere. Un dizionario le contiene:
{"x": 240, "y": 180, "vx": 2, "vy": -3, "life": 30}vx e vy sono la sua velocità: 2 pixel a destra e 3 verso l’alto a ogni fotogramma. Tieni tutte le particelle in un’unica lista e, a ogni fotogramma, spostale tutte e sottrai un fotogramma alla loro durata:
for p in particles:
p["x"] += p["vx"]
p["y"] += p["vy"]
p["life"] -= 1Disegna ogni particella finché la sua durata è superiore a 0, come un piccolo cerchio:
for p in particles:
if p["life"] > 0:
pygame.draw.circle(screen, (255, 160, 60), (p["x"], p["y"]), 3)Una particella non ha un’immagine né una classe. È poco costosa, quindi un gioco può averne centinaia contemporaneamente.
Sfida
FacileFai in modo che l’emettitore grigio al centro spari una scintilla:
- Quando viene premuto Space, aggiungi
{"x": 240, "y": 180, "vx": 2, "vy": -3, "life": 30}aparticles. - A ogni fotogramma, sposta ogni particella dei valori
vxevye diminuisci il suolifedi 1. - Disegna ogni particella con una durata superiore a 0 come un cerchio arancione
(255, 160, 60)di raggio 3.
Provalo tu
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()
Tutte le lezioni di Suoni e sensazioni di gioco
1Effetti sonori
Caricare un suonoSuono al verificarsi di un eventoVolume del suonoSuoni e tasti tenuti premuti4Scuotimento dello schermo e flash all’impatto
Scuotimento dello schermoFlash all’impattoPausa all’impattoMantienilo discreto3Particelle
Una particellaUn'esplosione di particelleDissolvenza e rimpicciolimentoRimuovere le particelle inattive6Perfezionare Star Patrol
Suoni di Star PatrolScintille a ogni colpoEsercitati da solo: Playground Pygame