Una partícula
Parte de la sección Sonido y sensaciones del juego del Journey de Pygame de Coddy. Lección 8 de 23.
Las chispas, el polvo, el humo y el confeti están hechos de partículas: muchas cosas diminutas que salen volando, duran poco tiempo y desaparecen. Una partícula solo necesita unos pocos números: dónde está, cuánto se mueve en cada fotograma y cuántos fotogramas le quedan de vida. Un diccionario las contiene:
{"x": 240, "y": 180, "vx": 2, "vy": -3, "life": 30}vx y vy son su velocidad: 2 píxeles a la derecha y 3 hacia arriba en cada fotograma. Guarda todas las partículas en una sola lista y, en cada fotograma, muévelas todas y réstales un fotograma de vida:
for p in particles:
p["x"] += p["vx"]
p["y"] += p["vy"]
p["life"] -= 1Dibuja cada partícula mientras su vida sea mayor que 0, como un círculo pequeño:
for p in particles:
if p["life"] > 0:
pygame.draw.circle(screen, (255, 160, 60), (p["x"], p["y"]), 3)Una partícula no tiene imagen ni clase. Es barata, así que un juego puede tener cientos a la vez.
Desafío
FácilHaz que el emisor gris del centro lance una chispa:
- Cuando se presione la barra espaciadora, agrega
{"x": 240, "y": 180, "vx": 2, "vy": -3, "life": 30}aparticles. - En cada fotograma, mueve cada partícula según sus
vxyvy, y reduce sulifeen 1. - Dibuja cada partícula cuya vida sea mayor que 0 como un círculo naranja
(255, 160, 60)de radio 3.
Pruébalo tú mismo
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()
Todas las lecciones de Sonido y sensaciones del juego
1Efectos de sonido
Cargar un sonidoSonido al ocurrir un eventoVolumen del sonidoSonidos y teclas presionadas4Sacudida de pantalla y destello de impacto
Sacudida de pantallaDestello de impactoPausa tras el impactoMantén la sutileza6Pulir la Patrulla Estelar
Sonidos de la Patrulla EstelarChispas con cada impactoPractica por tu cuenta: Playground de Pygame