Menu
CoddyTech

Un compteur de frames

Fait partie de la section Sprites et images du Journey Pygame de Coddy. Leçon 26 sur 36.

Le personnage traverse la fenêtre, mais ses jambes ne bougent jamais : il affiche toujours frames[0]. Afficher l’autre image à chaque fois provoquerait un clignotement 60 fois par seconde, beaucoup trop rapide pour les jambes. Garde plutôt chaque image pendant quelques images, à l’aide d’un compteur :

timer += 1
if timer == 10:
    timer = 0
    frame_index = (frame_index + 1) % len(frames)

timer compte les images. Toutes les 10 images, il revient à 0 et frame_index passe à l’image suivante. % len(frames) le ramène à 0 après la dernière image, de sorte que la marche tourne en boucle indéfiniment, quel que soit le nombre d’images de la liste.

Dessine frames[frame_index]. À 60 images par seconde, chaque pose s’affiche pendant un sixième de seconde : une marche tranquille. Un nombre inférieur à 10 accélère le mouvement des jambes.

challenge icon

Défi

Moyen
  1. Avant la boucle, initialise frame_index = 0 et timer = 0.
  2. À chaque image, ajoute 1 à timer ; lorsqu’il atteint 10, remets-le à 0 et passe frame_index à l’image suivante, en revenant au début avec % len(frames).
  3. Dessine frames[frame_index] à (x, 300).

Essayez vous-même

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Walk Cycle")
clock = pygame.time.Clock()

sheet = pygame.image.load("assets/sheets/platformer_characters.png").convert_alpha()
frames = []
for col in (0, 1):
    frame = sheet.subsurface((col * 24, 0, 24, 24))
    frames.append(pygame.transform.scale_by(frame, 3))
x = 0

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    x += 2
    if x > 640:
        x = -72

    screen.fill((20, 22, 40))
    screen.blit(frames[0], (x, 300))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Playground Pygame