Menu
CoddyTech

Penghitung Frame

Termasuk bagian Sprite dan Gambar dalam perjalanan Pygame di Coddy. Pelajaran 26 dari 36.

Karakter berjalan melintasi jendela, tetapi kakinya tidak pernah bergerak: karakter itu selalu menampilkan frames[0]. Menampilkan frame lainnya setiap kali akan membuatnya berkedip 60 kali per detik, terlalu cepat untuk kaki. Tahan setiap gambar selama beberapa frame, dengan sebuah penghitung:

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

timer menghitung frame. Setiap 10 frame, penghitung dimulai lagi dari 0 dan frame_index beralih ke gambar berikutnya. % len(frames) mengembalikannya ke 0 setelah gambar terakhir, sehingga gerakan berjalan berulang tanpa henti, berapa pun jumlah frame dalam list.

Gambar frames[frame_index]. Pada 60 frame per detik, setiap pose ditampilkan selama seperenam detik: gerakan berjalan yang tenang. Angka yang lebih kecil dari 10 membuat kaki bergerak lebih cepat.

challenge icon

Tantangan

Sedang
  1. Sebelum perulangan, buat frame_index = 0 dan timer = 0.
  2. Pada setiap frame, tambahkan 1 ke timer; saat nilainya mencapai 10, atur kembali ke 0 dan pindahkan frame_index ke frame berikutnya, dengan kembali ke awal menggunakan % len(frames).
  3. Gambar frames[frame_index] di (x, 300).

Coba sendiri

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 iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Sprite dan Gambar

Latihan sendiri: Playground Pygame