Menu
CoddyTech

Un contatore di frame

Fa parte della sezione Sprite e immagini del percorso Pygame di Coddy. Lezione 26 di 36.

Il personaggio cammina attraverso la finestra, ma le sue gambe non si muovono mai: mostra sempre frames[0]. Mostrare ogni volta l'altro fotogramma lo farebbe sfarfallare 60 volte al secondo, troppo velocemente per le gambe. Mantieni ogni immagine per alcuni fotogrammi, usando invece un contatore:

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

timer conta i fotogrammi. Ogni 10 fotogrammi riparte da 0 e frame_index passa all'immagine successiva. % len(frames) lo riporta a 0 dopo l'ultimo fotogramma, così la camminata si ripete all'infinito, qualunque sia il numero di fotogrammi nell'elenco.

Disegna frames[frame_index]. A 60 fotogrammi al secondo, ogni posa viene mostrata per un sesto di secondo: una camminata tranquilla. Un numero inferiore a 10 fa muovere le gambe più velocemente.

challenge icon

Sfida

Medio
  1. Prima del ciclo, imposta frame_index = 0 e timer = 0.
  2. A ogni fotogramma, aggiungi 1 a timer; quando raggiunge 10, reimpostalo a 0 e passa frame_index al fotogramma successivo, ricominciando da capo con % len(frames).
  3. Disegna frames[frame_index] in (x, 300).

Provalo tu

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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Sprite e immagini

Esercitati da solo: Playground Pygame