Une particule
Fait partie de la section Son et sensations de jeu du Journey Pygame de Coddy. Leçon 8 sur 23.
Les étincelles, la poussière, la fumée et les confettis sont constitués de particules : de minuscules éléments qui jaillissent, ne vivent que peu de temps et disparaissent. Une particule n’a besoin que de quelques nombres : sa position, la distance dont elle se déplace à chaque image et le nombre d’images qu’il lui reste à vivre. Un dictionnaire les stocke :
{"x": 240, "y": 180, "vx": 2, "vy": -3, "life": 30}vx et vy représentent sa vitesse : 2 pixels vers la droite et 3 vers le haut à chaque image. Place chaque particule dans une seule liste, puis déplace-les toutes à chaque image et retire une image à leur durée de vie :
for p in particles:
p["x"] += p["vx"]
p["y"] += p["vy"]
p["life"] -= 1Affiche chaque particule tant que sa durée de vie est supérieure à 0, sous la forme d’un petit cercle :
for p in particles:
if p["life"] > 0:
pygame.draw.circle(screen, (255, 160, 60), (p["x"], p["y"]), 3)Une particule n’a ni image ni classe. Elle est peu coûteuse, donc un jeu peut en avoir des centaines à la fois.
Défi
FacileFais tirer une étincelle à l’émetteur gris au milieu :
- Lorsque tu appuies sur Espace, ajoute
{"x": 240, "y": 180, "vx": 2, "vy": -3, "life": 30}àparticles. - À chaque image, déplace chaque particule selon ses valeurs
vxetvy, et diminue sa valeurlifede 1. - Dessine chaque particule dont la durée de vie est supérieure à 0 sous la forme d’un cercle orange
(255, 160, 60)de rayon 3.
Essayez vous-même
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()
Toutes les leçons de Son et sensations de jeu
4Tremblement de l’écran et flash d’impact
Tremblement de l’écranFlash d’impactArrêt sur impactRester subtil3Particules
Une particuleUne explosion de particulesFondu et rétrécissementSupprimer les particules mortesEntraînez-vous par vous-même : Playground Pygame