Menu
CoddyTech

Bir Sprite Sheet'i Kesmek

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

Animasyon, art arda gösterilen birkaç resimden oluşur. Oyunlar bu resimleri genellikle tek bir dosyada, sprite sheet adı verilen bir dosyada tutar: yan yana dizilmiş küçük karelerden oluşan bir ızgara. Başlangıç kodu assets/sheets/platformer_characters.png dosyasının tamamını çizer; yatayda 9, dikeyde 3 kare vardır ve her biri 24'e 24 pikseldir. Yeşil karakterin iki yürüme pozu, üst sıradaki ilk iki karededir.

sheet.subsurface(rect), bir Rect'in içindeki bölümü kendi Surface'i olarak verir ve hiçbir pikseli kopyalamaz. row satırındaki col numaralı kare (col * 24, row * 24) noktasında başlar:

frames = []
for col in (0, 1):
    frame = sheet.subsurface((col * 24, 0, 24, 24))
    frames.append(pygame.transform.scale_by(frame, 3))

640'a 480 piksellik bir pencerede 24 piksel çok küçüktür; bu nedenle her kare, 72'ye 72 piksele ölçeklendirilmek üzere 3 ile büyütülür. Tam sayı katsayısıyla ölçeklenen piksel sanatı keskin kenarlarını korur. Kesme ve ölçeklendirme işlemlerini döngüden önce bir kez yapıp kareleri bir listede tut: sonraki derslerde bu karelerden biri dizin numarasıyla seçilecek.

challenge icon

Görev

Orta
  1. Döngüden önce frames dizisini oluştur: üst satırın 0 ve 1. sütunlarındaki kareler; her biri 24'e 24 boyutunda ve 3 kat büyütülmüş olsun.
  2. Tüm görsel sayfası yerine frames[0] öğesini (200, 200) konumunda, frames[1] öğesini de (368, 200) konumunda çiz.

Kendin dene

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Sprite Sheet")
clock = pygame.time.Clock()

sheet = pygame.image.load("assets/sheets/platformer_characters.png").convert_alpha()

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((20, 22, 40))
    screen.blit(sheet, (212, 204))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

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

Kendi başına pratik yap: Pygame playground