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.
Görev
Orta- Döngüden önce
frame_index = 0vetimer = 0değerlerini ayarla. - Her karede
timerdeğerini 1 artır; 10'a ulaştığında tekrar 0 yap veframe_indexdeğerini% len(frames)kullanarak döngüsel biçimde sonraki kareye geçir. 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()
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
4Sprite'lar ve Gruplar
Sprite SınıfıGruplarkill() ile Kaldırmaspritecollide ile YakalamaGruba Karşı Grup2Döndür, Yansıt, Ölçekle
Merkez Etrafında DöndürUçtuğun Yöne DönBir Görseli ÖlçekleOrijinalinden Döndür5Piksel Hassasiyetinde Çarpışmalar
Dikdörtgenler Haksız HissettiriyorMaskelerPiksel Hassasiyetinde Sprite'larDaire Hitbox'ları3Oyun Nesneleri için Sınıflar
İlk SınıfınızMetotlarSelf Nesnenin KendisidirNesneler ListesiGörselli NesnelerBir Alt Sınıf6Sprite Sheet'lerden Animasyon
Bir Sprite Sheet'i KesmekBir Kare SayacıZamanla AnimasyonTek Seferlik Bir PatlamaKendi başına pratik yap: Pygame playground