PyGame ile Basit Shoot’m up Oyun Yapımı #2
Sprite Kullanımı
Simsiyah boş bir ekranın pek bir anlamı yok. Uçağımı yerleştireyim. Grafik işinden fazla anlamadığım için fazla yazılımcı grafiğine (bkz: coder graphics) maruz bırakmamak adına kenny.nl’nin grafik paketlerini kullanacağım. Bu sitedeki grafik paketleri spritesheet formatında ve XML dosyasıyla beraber geliyorlar. Aşağıda kenny.nl sprite sheet’lerinden grafik çeken bir SpriteSheet sınıfı var.
Spritelarımı tanımlarken bu sınıftan faydalanacağım.
xml.etree.ElementTree modünün nasıl çalıştığı hakkında konuyu dağıtmamak için detaya girmeyeceğim. Sanırım xml yapısını self.map özelliği altında kopyaladığını ve get_image() metoduyla ismi verilen resmi spritesheet’ten keserek döndürdüğünü söylemem kafi olacaktır.
Doğru tahmin ettiniz “self.spritesheet.subsurface(rect)” methodu surface nesnesini rect ile belirlenen kısmına denk gelen imajı döndürüyor.
sheet = SpriteSheet(“assets/sheet.png”, “assets/sheet.xml”) ile spritesheet nesnemi ve:
playerSprite = sheet.get_image(“playerShip3_blue.png”) ile sprite’ımı tanımlıyorum. PyGame’de bir sprite tanımlamak onun ekranda görüneceği anlamına gelmiyor. Tanımladığım sprite’ı bir de oyun ekranına kopyalamam lazım. Bunu döngü içinde eklediğim screen.blit(playerSprite, (160,500)) komutuyla yaptım. Surface nesnelerinin blit metodu o yüzeye grafik kopyalamaya yarıyor. Neden ana döngü içinde? Çünkü ileride konumunu değiştirdiğimde yeni konumun görünmesi için tekrar kopyalamam gerekecek.
Buraya kadar anlattığım kodun tamamını aşağıdaki linkten alabilirsiniz. Kullandığım png ve xml dosyasını da almayı unutmayın.
Bu serinin diğer yazıları için: PyGame ile Basit Shoot’m Up Oyun Yapımı