Ekranda hareket eden her nesne için sprite tanımını koyabiliriz. Sprite hareket ettirilebilir, başka spritelar ile etkileşim sağlanabilir. Araba yarışında kullandığımız araba nesnesi bir sprite örneğidir. Sprite üzerinde değişiklikler(konum vb.) oyun döngüsü esnasında
update,
draw fonksiyonları ile sağlanır. Çok fazla sprite olması, kontrolü zorlaştıracaktır, buna çözüm olarak
sprite.Group kullanılır. Bu yöntem tüm spriteları bir araya toplayacaktır ve aynı anda update ve draw işlemleri gerçekleşecektir.
sprites_group = pygame.sprite.Group()
Döngü dışında grup değişkeni tanımlandı. Döngü içerisinde aşağıdaki kod yazılır.
# update
sprites_group.update()
# draw
screen.fill(green)
sprites_group.draw(screen)
Sıra geldi bir tane sprite oluşturmaya. Spritelar aslında birer nesnedir. Nesneleri tanımlamak içinse
class kullanırız. Tanımlanan sprite sınıfı araba üzerine olsun.
class Car(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((40,70))
self.image.fill(black)
self.rect = self.image.get_rect()
self.rect.topleft(10,30)
Sınıf tanımlarken parametre kısmındaki
pygame.sprite.Sprite Pygame'de önceden tanımlanmış Sprite sınıfını temel alıyoruz. Sonrasında
__init__() kurucu fonksiyonu yazılır. Bu fonksiyon sınıftan bir nesne üretildiğinde o nesnenin hangi özelliklere ve nasıl çalışacağını belirlemede kullanılır. Kurucu fonksiyonu yazarken ilk satırın
pygame.sprite.Sprite.__init__(self) olarak bildirmek zorundayız. Sprite sınıflarını başlatma metodudur. image değişkeni sprite görümü ayarlamadan kullanılır. Yukarıda şimdilik nesneye ait width, height değer argümanları girildi. image.fill ile nesneye ait renk ayarlandı. Nesneye konumlandırabilme özelliği
get_rect() yöntemi ile sağlandı.
rect.topleft veya
rect.center metdotları ile sprite nesnesi için spawn noktası belirleyebiliriz. Sonrasında ise oluşturduğumuz sprite sınıfını, sprite grubuna ekliyoruz.
sprites_group = pygame.sprite.Group()
car = Car()
sprites_group.add(car)
Sonrasında kodu çalıştıralım sol köşede sprite nesnemiz gözükecektir.
import pygame
import sys
pygame.init()
size = width, height = 640, 480
speed = [1,1]
green = (0,255,0)
black = (0,0,0)
screen = pygame.display.set_mode(size)
class Car(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((40,70))
self.image.fill(black)
self.rect = self.image.get_rect()
self.rect.topleft = (10,30)
sprites_group = pygame.sprite.Group()
car = Car()
sprites_group.add(car)
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
# update
sprites_group.update()
# draw
screen.fill(green)
sprites_group.draw(screen)
pygame.display.flip()
pygame.quit()
Hiç yorum yok:
Yorum Gönderme