PyGame İçin Program İskeleti ve Anlamları
- August 13, 2012
Python ile oyun dünyasına giriş yapmak istiyorsanız muhtemelen ilk durağınız pygame olacak. Bu konuda çok fazla sayıda Türkçe döküman olmadığı için öğrendiklerimi aktarmak istiyorum. Ayrıca, Python ile oyun yazma hakkında bir kitabın çevirisi için şu an yazarıyla görüşüyoruz. Bu yazıda PyGame ile yazılacak olan uygulamada genel yapıyı ve anlamlarını ele alalım.
import pygame
pygame.init()
cozunurluk = [800,600]
pencere = pygame.display.set_mode(cozunurluk)
baslik = pygame.display.set_caption("Oyun v0.1")
FPS = 50
saat = pygame.time.Clock()
kapat = False
while kapat == False:
for event in pygame.event.get():
if event.type == pygame.QUIT:
kapat = True
# Programda kullanılacak öğeler buranın altında oluşturulacak, değişiklikler buranın altında yapılacak
# Programda kullanılacak öğeler buranın üzerinde oluşturulacak, değişiklikler buranın üzerinde yapılacak.
# Ekrana bastırılacak öğeler buranın altında bastırılacak.
# Ekrana bastırılacak öğeler buranın üzerinde bastırılacak.
saat.tick(FPS)
pygame.display.flip()
pygame.quit()
Öncelikle, normalde programın kapatılabilmesi için sys modülündekisys.exit() fonksiyonundan faydalanılır. Burda bunu kullanmaktan kurtulmuş olduk. Ayrıca genelde o komut hata veriyordu(en azından benim bilgisayarımda), kapanıyor olsa da pek mutlu kapanmıyordu. Bu yapıda böyle bir sıkıntımız kalmamış oluyor. Hazır başlamışken söyleyeyim, normalde Python programı kapattığınızda arkada çalışmakta olan işlemleri sonlandırır ve siler. Ancak IDLE ile çalışıyorsanız Pygame’de bu gerçekleşmiyor. Son satırdaki pygame.quit() yapısı da bunun gerçekleşmesini sağlamak için var. Yani siz IDLE dışında(ya da başka bir IDE altında sorun yaşıyorsanız onun dışında) Python çekirdeği ile uygulamalarınızı çalıştırırken son satırı yazmak zorunda değilsiniz. Yine de, kodunuzu dağıtmak istiyorsanız kullanıcıları düşünerek bulundurmanızı öneririm.
Şimdi en baştan açıklamaya başlayalım. Elimizde 800×600 çözünürlüğünde bir pencere olmasını, başlığının “Oyun v0.1” olmasını istiyoruz. Ayrıca oyunun 50 FPS’de çalışmasını, yani saniyede 50 kere ekranın yenilenmesini istiyoruz. FPS konusuna yazını devamında tekrar gireceğiz.
İlk olarak pygame modülünü import ederek başladık (satır 1). 3. satırda ise pygame framework ünü kullanabilmemiz için init() fonksiyonu ile başlattık. Bu işlem pygame ile yazacağımız oyunlarda bir standart durumunda(en azından şu ana kadar gördüklerimde).
pygame.event.get() ile kullanıcının yaptığı her şeyi(imlecin o anki konumu, tıklamalar, klavyeden basılı tuşlar gibi) bir soraki döngüye kadar kaydeder. Buradaki for döngüsü ile bu kayıtlar arasında çıkış olup olmadığını if yapısı yardımıyla kontrol ettik. Eğer çıkış yapıldıysa, while döngüsünden çıkılabilsin diye kapat değişkenine True değerini verdik.
Aradaki yorum satırları yazacağınız oyuna göre değişebilir. 24. satırda ise ekranın yenilenebilmesi için gerekli kodumuzu yazdık. Bu da pygame ile yaptığımız tüm uygulamalarda yer alacak.