Menu
CoddyTech

Um contador de quadros

Parte da seção Sprites e imagens do Journey de Pygame da Coddy. Lição 26 de 36.

O personagem atravessa a janela, mas suas pernas nunca se movem: ele sempre mostra frames[0]. Mostrar o outro quadro a cada vez faria a imagem piscar 60 vezes por segundo, rápido demais para as pernas. Em vez disso, mantenha cada imagem por alguns quadros, usando um contador:

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

timer conta os quadros. A cada 10 quadros, ele volta a 0 e frame_index avança para a próxima imagem. % len(frames) faz com que ele volte a 0 após a última, então a caminhada fica em loop para sempre, qualquer que seja o número de quadros na lista.

Desenhe frames[frame_index]. A 60 quadros por segundo, cada pose aparece por um sexto de segundo: uma caminhada tranquila. Um número menor que 10 faz as pernas se moverem mais rápido.

challenge icon

Desafio

Médio
  1. Antes do laço, defina frame_index = 0 e timer = 0.
  2. A cada quadro, some 1 a timer; quando ele chegar a 10, defina-o novamente como 0 e avance frame_index para o próximo quadro, voltando ao início com % len(frames).
  3. Desenhe frames[frame_index] em (x, 300).

Experimente você mesmo

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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Sprites e imagens

Pratique por conta própria: Playground de Pygame