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.
Desafio
Médio- Antes do laço, defina
frame_index = 0etimer = 0. - A cada quadro, some 1 a
timer; quando ele chegar a 10, defina-o novamente como 0 e avanceframe_indexpara o próximo quadro, voltando ao início com% len(frames). - 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()
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
1Carregando imagens
Carregue uma imagemPosicione-a com um RectMova a imagemLadrilhe o plano de fundoPixels transparentes2Girar, Inverter, Redimensionar
Girar em torno do centroFicar de frente para a direção do vooRedimensionar uma imagemGirar a partir do original3Classes para Objetos de Jogos
Sua primeira classeMétodosSelf é o objetoUma lista de objetosObjetos com imagensUma subclasse6Animação com Sprite Sheets
Recorte uma Sprite SheetUm contador de quadrosAnime com o tempoUma explosão de disparo únicoPratique por conta própria: Playground de Pygame