Pygame'de Sprite Görüntü Ekleme

Sprite kullanımından şu yazıda bahsedilmişti. Bu yazıda ise sprite nesnesine yani oluşturduğumuz araba nesnesine araba görünümü veren resim ekleyeceğiz. Bu tarz resim dosyaları opengameart.org adresinden bulunabilir. Ben kendim çizdim.😐 Bu resim oyun kodunun bulunduğu klasör içine atılır.

Bu resmi sprite görünümü yapabilmek için ilk olarak os modülünü import ediyorum. Bu sayede oyunun bulunduğu dizini gösterebiliriz. Kod içerisinde oyunun bulunduğu dizini bir değişkene göstermemiz gerek. 
import os

g_directory = os.path.dirname(__file__)
__file__ değişkeni içinde yazıldığı kodun bulunduğu klasörü işaret eder. os.path.dirname metodu ise klasöre ulaşmak için gerekli yolu oluşturur. Bu yolu g_directory değişkenine atadık. Daha sonra oyunun bulunduğu klasör içerisinde images adında klasör oluşturulur ve resim bu klasör içine atılır. Kodun devamı ise şu şekilde olur.
import os

g_directory = os.path.dirname(__file__)
image_folder = os.path.join(g_directory, 'images')
player_image = pygame.image.load(os.path.join(images_folder, 'car.png')).convert()


class Car(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = player_image
        self.rect = self.image.get_rect()
        self.rect.topleft = (10,30)
Pygame sprite resim ekleme
Bu arada yukarıda verdiğim 3, 4 ve 5. satır kodu set_mode metodundan sonra gelmeli. Aksi takdirde belli çeşit hatalar alabilirsiniz. Ancak farkettiyseniz siyah arkaplan mevcut. Arabanın arkaplan rengini transparan olarak göstermemiz lazım. Bunun için kullanabileceğimiz set_colorkey() metodu var. Bu metot, parametre olarak verdiğimiz rengin piksel olarak ihmal edilmesini sağlar.
class Car(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = player_image
        self.image.set_colorkey(black)
        self.rect = self.image.get_rect()
        self.rect.topleft = (10,30)
Pygame sprite resim ekleme
import pygame
import sys
import os

pygame.init()

size = width, height = 640, 480
speed = [1,1]
green = (0,255,0)
black = (0,0,0)

screen = pygame.display.set_mode(size)

g_directory = os.path.dirname(__file__)
images_folder = os.path.join(g_directory, 'images')
player_image = pygame.image.load(os.path.join(images_folder, 'car.png')).convert()


class Car(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = player_image
        self.image.set_colorkey(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