Menu
CoddyTech

Bir Kare Sayacı

Coddy'nin Pygame Journey'sinin Sprite'lar ve Görseller bölümünün bir parçası. Ders 26 / 36.

Karakter pencere boyunca yürür, ancak bacakları hiç hareket etmez: her zaman frames[0] gösterilir. Her seferinde diğer kareyi göstermek, saniyede 60 kez titremeye neden olur; bu, bacaklar için çok hızlıdır. Bunun yerine her resmi birkaç kare boyunca bir sayaçla göster:

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

timer kareleri sayar. Her 10 karede bir yeniden 0 olur ve frame_index bir sonraki resme geçer. % len(frames), listedeki kare sayısı ne olursa olsun, son kareden sonra değeri yeniden 0'a döndürür; böylece yürüyüş sonsuza kadar döngü halinde devam eder.

frames[frame_index] öğesini çiz. Saniyede 60 kare hızında her poz saniyenin altıda biri boyunca gösterilir: sakin bir yürüyüş. 10'dan küçük bir sayı, bacakların daha hızlı hareket etmesini sağlar.

challenge icon

Görev

Orta
  1. Döngüden önce frame_index = 0 ve timer = 0 değerlerini ayarla.
  2. Her karede timer değerini 1 artır; 10'a ulaştığında tekrar 0 yap ve frame_index değerini % len(frames) kullanarak döngüsel biçimde sonraki kareye geçir.
  3. frames[frame_index] değerini (x, 300) konumunda çiz.

Kendin dene

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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Sprite'lar ve Görseller bölümündeki tüm dersler

Kendi başına pratik yap: Pygame playground