Menu
CoddyTech

Licznik klatek

Część sekcji Sprite’y i obrazy ścieżki Pygame w Coddy. Lekcja 26 z 36.

Postać przechodzi przez okno, ale jej nogi się nie poruszają: zawsze wyświetla frames[0]. Wyświetlanie za każdym razem innej klatki powodowałoby migotanie 60 razy na sekundę — zdecydowanie za szybko, by pokazać ruch nóg. Zamiast tego wyświetlaj każdy obraz przez kilka klatek, używając licznika:

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

timer liczy klatki. Co 10 klatek zaczyna od nowa od 0, a frame_index przechodzi do następnego obrazu. % len(frames) zawija indeks z powrotem do 0 po ostatnim obrazie, dzięki czemu chód zapętla się bez końca, niezależnie od liczby klatek na liście.

Rysuj frames[frame_index]. Przy 60 klatkach na sekundę każda poza jest wyświetlana przez jedną szóstą sekundy: to spokojny chód. Mniejsza liczba niż 10 sprawia, że nogi poruszają się szybciej.

challenge icon

Wyzwanie

Średni
  1. Przed pętlą ustaw frame_index = 0 i timer = 0.
  2. W każdej klatce dodaj 1 do timer; gdy osiągnie 10, ustaw ją ponownie na 0 i przejdź do następnej klatki za pomocą frame_index, zawijając indeks z użyciem % len(frames).
  3. Narysuj frames[frame_index] w pozycji (x, 300).

Spróbuj swoich sił

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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Sprite’y i obrazy

Poćwicz samodzielnie: Edytor online Pygame