Menu
CoddyTech

Un contador de fotogramas

Parte de la sección Sprites e imágenes del Journey de Pygame de Coddy. Lección 26 de 36.

El personaje camina por la ventana, pero sus piernas nunca se mueven: siempre muestra frames[0]. Mostrar el otro fotograma cada vez produciría un parpadeo 60 veces por segundo, demasiado rápido para las piernas. Mantén cada imagen durante unos cuantos fotogramas, usando un contador:

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

timer cuenta los fotogramas. Cada 10 fotogramas vuelve a empezar en 0 y frame_index avanza a la siguiente imagen. % len(frames) lo devuelve a 0 después de la última imagen, así que el ciclo de caminata se repite para siempre, sin importar cuántos fotogramas haya en la lista.

Dibuja frames[frame_index]. A 60 fotogramas por segundo, cada pose se muestra durante una sexta parte de un segundo: una caminata tranquila. Un número menor que 10 hace que las piernas se muevan más rápido.

challenge icon

Desafío

Intermedio
  1. Antes del bucle, establece frame_index = 0 y timer = 0.
  2. En cada fotograma, suma 1 a timer; cuando llegue a 10, vuelve a establecerlo en 0 y avanza frame_index al siguiente fotograma, volviendo al inicio con % len(frames).
  3. Dibuja frames[frame_index] en (x, 300).

Pruébalo tú mismo

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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Sprites e imágenes

Practica por tu cuenta: Playground de Pygame