Oyunlarda karşımıza çıkan animasyonların aslında ard arda gelen resimler olduğunu düşünürsek. Bir oyun yapmaya çalışırken temelde resim oynatmayı bilmenin ne kadar önemli olduğunu fark ederiz. Orjinal dökümanlarda resim oynatma mantığı üzerine uzunca örnekler verilmiş ben bunları geçiyor ve hemen işimize dönüyorum.
Blit
Animasyon konusunda acemi olanlar için(benim gibi) blit terimi kısaca bir resimdeki bir grafiği başka bir resme kopyama anlamına geldiğini söyleyebiliriz. Belli bir alandaki yada belli pikseller arasındaki bir grafiği diyerek daha da açabiliriz bu konuyu 🙂 Örneğimize geçersek:
background = [terrain1, terrain1, terrain2, terrain2, terrain2, terrain1]
screen = create_graphics_screen()
for i in range(6):
screen.blit(background[i], (i*10, 0))
playerpos = 3
screen.blit(playerimage, (playerpos*10, 0))
Şimdi animasyonumuzun arka planı için terrain1 ve terrain2 resimlerini kullandık. Bunun yanında ehr grafiğimizi 10 piksel genişliğinde kabul ettiğimize dikkat edin. Şimdi playerimage’ini bir kare hareket ettirelim.
screen.blit(background[playerpos], (playerpos*10, 0))
playerpos = playerpos - 1
screen.blit(playerimage, (playerpos*10, 0))
Gördüğünüz gibi çok basit bir işlem. Bu kodla bir arka plan üzerine karakter yerleştirmeyi nasıl yapacağımızı öğrenmiş olduk.
Sayfa Kordinatları
Bir nesnenin ekrandaki yerini belirlerken blit() fonksiyonuna bunun yerini belirtmemiz gerekir. Pygame’de bunu (X,Y) kordinatları şeklinde kullanabiliriz(kim demiş analitik geometrinin gereksiz olduğunu?). Yüzeyin sol-üst köşesi (0,0)’dır. Sağa kaydırırsak (10,0) olur. Aşağı indirelim bir de (10,10) oldu. İlk verdiğimiz kordinat bulunduğu yeri gösteriyordu sol-üst konumu yön tayin ederken belirtiriz.
Pygame bu kordinat işleri için kullanışlı bir özellik getirmiştir: Rect. Rect kısaca size bu kordinatlar çerçevesinde dikdörgensi bir alan sunar, size bu alan içersinde hareket etmeyi ve pozisyonlandırmayı sağlayan metotlar sunar. Ayrıca şunuda belirtmeliyiz ki pygame’de ki rect dahil bir çok fonksiyon 4 elementli tüpleri kabul eder(left, top, width, height).
Arkaplanı Değiştirme
Bazen sabit arkaplanlar kullansakta oyunlarda genelde arkaplan değişir. Bu işlemi yapmadan önce ekranı erase() fonksiyonu ile temizlemek gerekir. Yeniden çizimimizi yaptıktan sonra “pygame.display.update()” fonksiyonu ile çizdiklerimizi ekrana dökeriz.
Bir sonraki konuda daha düzgün bir hareket inceliyeceğiz, şimdi yemek zamanı. 😀