Une liste d’objets
Fait partie de la section Sprites et images du Journey Pygame de Coddy. Leçon 13 sur 36.
Deux étoiles nommées ne font pas un ciel. Il en faut quarante dans une liste : crée les objets dans une boucle et ajoute chacun à la liste.
stars = []
for i in range(40):
x = random.randint(0, 639)
y = random.randint(0, 479)
speed = random.randint(1, 3)
stars.append(Star(x, y, speed))Ensuite, une boucle les met toutes à jour et une autre les dessine toutes :
for star in stars:
star.update()Dans la boucle for, star désigne chaque objet à tour de rôle, donc star.update() déplace cette étoile à sa propre vitesse. Ajouter une centaine d’étoiles de plus ne change qu’un nombre ; le code de mise à jour et de dessin reste le même.
Crée la liste une seule fois, avant la boucle de jeu. Une liste créée dans la boucle contient de nouvelles étoiles à chaque image, toutes revenues à leur position de départ, donc rien ne bouge jamais.
Défi
Moyen- Ajoute
import randomen haut. - Avant la boucle, crée
stars: une liste de 40 objets Star, chacun avec une valeur x aléatoire de 0 à 639, une valeur y aléatoire de 0 à 479 et une vitesse aléatoire de 1 à 3. - Dans la boucle, mets à jour chaque étoile de
starset dessine chaque étoile après le remplissage. Supprimeslowetfast.
Essayez vous-même
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Falling Stars")
clock = pygame.time.Clock()
class Star:
def __init__(self, x, y, speed):
self.x = x
self.y = y
self.speed = speed
def update(self):
self.y += self.speed
if self.y > 480:
self.y = 0
def draw(self, screen):
pygame.draw.circle(screen, (255, 255, 255), (self.x, self.y), 4)
slow = Star(200, 0, 1)
fast = Star(440, 0, 3)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
slow.update()
fast.update()
screen.fill((20, 22, 40))
slow.draw(screen)
fast.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Sprites et images
1Charger des images
Charger une imageLa placer avec un rectangleDéplacer l’imageRépéter un arrière-planPixels transparents2Tourner, retourner, redimensionner
Faire pivoter autour du centreRegarder dans la direction du volRedimensionner une imagePivoter à partir de l’original5Collisions au pixel près
Les rectangles semblent injustesMasquesSprites au pixel prèsZones de collision circulaires3Les classes pour les objets du jeu
Votre première classeLes méthodesSelf est l’objetUne liste d’objetsDes objets avec des imagesUne sous-classe6Animation à partir de feuilles de sprites
Découper une feuille de spritesUn compteur de framesAnimer avec le tempsUne explosion à déclenchement uniqueEntraînez-vous par vous-même : Playground Pygame