Pygame kitaplığını kullanan bir oyun geliştiricisiyseniz, muhtemelen Sprite sınıfıyla karşılaşmışsınızdır. Sprite sınıfı, ekranda kolayca hareket ettirebileceğiniz, döndürebileceğiniz ve ölçekleyebileceğiniz oyun karakterleri oluşturmak için güçlü bir araçtır.
Basit bir Python programı ile Pygame'de hareketli karakter tabanlı oyun karakterleri oluşturma sürecini öğrenebilirsiniz. Temel bir Sprite sınıfının nasıl oluşturulacağını öğrenin, ardından davranışı kontrol etmek için nitelikler ve yöntemler ekleyin.
Pygame'in Sprite Sınıfına Giriş
Pygame'deki Sprite sınıfı, bir oyun karakterinin tüm özelliklerini ve davranışlarını içeren bir konteyner sınıfıdır. Sabit genişlik ve yüksekliğe sahip bir görüntüyü temsil eden Pygame'in Surface sınıfından türemiştir.
Bununla çalışmak için, Sprite sınıfından miras alan yeni bir sınıf oluşturmanız ve oyun karakterinizin sahip olmasını istediğiniz öznitelikleri ve yöntemleri tanımlamanız gerekir.
Bir Oyun Karakteri İçin Temel Karakter Sınıfı Oluşturma
Birinci, pip kullanarak pygame modülünü kurun. Bunu şu komutla yapın:
bip düzenlemek pygame
Temel bir hareketli grafik oluşturmak için Sprite sınıfını Pygame'den içe aktarmanız ve ondan miras alan yeni bir sınıf oluşturmanız gerekir. Ardından, oyun karakterinizin sahip olmasını istediğiniz özellikleri ve yöntemleri tanımlayabilirsiniz.
Örneğin, ekranda sola ve sağa hareket edebilen bir oyuncu karakteri için Sprite sınıfı oluşturmak isteyebilirsiniz. Bunu yapmak için aşağıdaki öznitelikleri tanımlayabilirsiniz:
- konum: Ekrandaki hareketli grafiğin x ve y koordinatlarını tutan bir demet.
- hız: Hareketli grafiğin yatay ve dikey olarak hareket ettiği hızı tutan bir demet.
Ve aşağıdaki yöntemler:
- güncelleme(): Karakterin konumunu hızına göre güncelleyen bir yöntem.
- çizmek(): Hareketli karakteri ekrana çeken bir yöntem.
İşte bu nitelikleri ve yöntemleri uygulayan temel bir Sprite sınıfı örneği:
içe aktarmak pygame
sınıfoyuncu(pygame.sprite. karakter):
kesin__içinde__(öz, x, y, hız_x, hız_y):
Süper().__içinde__()
öz.konum = (x, y)
öz.hız = (hız_x, hız_y)
kesingüncelleme(kendi):
öz.konum = (öz.konum[0] + öz.hız[0], öz.konum[1] + öz.hız[1])
kesinçizmek(öz, yüzey):
pygame.çizmek.daire(yüzey, (255, 0, 0), öz.konum, 10)
__init__ yöntemi özel bir Python sınıflarında yöntem sınıfın bir örneğini oluşturduğunuzda çalışır. Örneğin özniteliklerini başlatmak için kullanabilirsiniz.
Bu kodda, Player sınıfının __init__ yöntemi dört bağımsız değişken alır: x, y, hız_x ve hız_y. Bu bağımsız değişkenler, oyuncu karakterinin başlangıç konumunu ve hızını belirler.
__init__ yöntemi, üst Sprite sınıfının __init__ yöntemi olan super().__init__() yöntemini de çağırır. Bu gereklidir çünkü Player sınıfı, Sprite sınıfının bir alt sınıfıdır ve Sprite sınıfının __init__ yöntemi, tüm hareketli karakterlerin ihtiyaç duyduğu bazı öznitelikleri ayarlar.
Kontrol Davranışına Nitelikler ve Yöntemler Ekleme
Artık temel bir Sprite sınıfına sahip olduğunuza göre, oyun karakterinizin davranışını kontrol etmek için nitelikler ve yöntemler ekleyebilirsiniz. Bu, hareket, saldırı, zıplama ve daha fazlasını içerebilir.
Bu özellikleri ve yöntemleri eklemek için oyununuzda hangi eylemleri istediğinizi düşünmeniz gerekir. Sprite'ınızda ilgili nitelikleri ve yöntemleri gerçekleştirebilecek ve tanımlayabilecek karakter sınıf.
Örneğin, hareketli grafiğin x ekseni üzerindeki hızını azaltan bir move_left() yöntemi gibi, hareketli grafiğin hareketini kontrol etmek için bir yöntem eklemek isteyebilirsiniz.
İşte bu ek öznitelikleri ve yöntemleri içeren değiştirilmiş bir Sprite sınıfı örneği:
sınıfoyuncu(pygame.sprite. karakter):
kesin__içinde__(öz, x, y, hız_x, hız_y):
Süper().__içinde__()
öz.konum = (x, y)
öz.hız = (hız_x, hız_y)
kesingüncelleme(kendi):
öz.konum = (öz.konum[0] + öz.hız[0], öz.konum[1] + öz.hız[1])
kesinçizmek(öz, yüzey):
pygame.çizmek.daire(yüzey, (255, 0, 0), öz.konum, 10)
kesinSola hareket et(kendi):
öz.hız = (-1, öz.hız[1])
kesinsağa hareket et(kendi):
öz.hız = (1, öz.hız[1])
Pygame oyununuzda Player sınıfını kullanmak için sınıfın bir örneğini oluşturmanız ve gerektiğinde yöntemlerini çağırmanız gerekir.
Bir pencere ve Player hareketli grafiğinin bir örneğini oluşturarak başlayın:
# Pygame'i başlat
pygame.init()# Pencere boyutunu ayarlayın
pencere_boyutu = (640, 480)# Bir pencere oluştur
pencere = pygame.display.set_mode (window_size)
# Bir oyuncu karakteri oluşturun
oyuncu = Oyuncu(320, 240, 0, 0)
Ardından, klavye olaylarını ve güncellemelerini işleyen ve hareketli grafiği çizen bir ana oyun döngüsü tanımlayın. Sol veya sağ ok tuşlarına bastığınızda, karakter karşılık gelen yönde hareket edecektir.
# Ana oyun döngüsü
sırasındaDoğru:
# Olayları işle
için etkinlik içinde pygame.event.get():
eğer event.type == pygame. ÇIKIŞ YAPMAK:
pygame.quit()
sys.exit()
eğer event.type == pygame. TUŞ AŞAĞI:
eğer event.key == pygame. K_LEFT:
player.move_left()
elif event.key == pygame. K_RIGHT:
player.move_right()
# Oyuncu karakterini güncelleyin
player.update()
# Pencereyi temizle
pencere.doldur((255, 255, 255))
# Oyuncu karakterini çizin
player.draw (pencere)
# Ekranı güncelle
pygame.display.update()
Ortaya çıkan programla, oyuncu karakterini kontrol edebilecek ve ekrana farklı konumlarda çizdiğini gözlemleyebileceksiniz:
Görüntü Modülünü Kullanarak Hareketli Grafikleri Yükleme ve Görüntüleme
Davranışı kontrol etmek için nitelikler ve yöntemler içeren temel bir Sprite sınıfına sahip olduğunuza göre, muhtemelen hareketli grafiğinize bazı grafikler eklemek isteyeceksiniz. Pygame'in görüntü modülü, görüntüleri yüklemeyi ve ekranda görüntülemeyi kolaylaştırır.
Bir görüntü yüklemek için, bir dosya yolunu bağımsız değişken olarak alan ve bir Surface nesnesi döndüren pygame.image.load() işlevini kullanmanız gerekir. Daha sonra bu Yüzey nesnesini, hareketli grafiği ekrana çizmek için kullanabileceğiniz self.image gibi bir hareketli grafik özniteliğine atayabilirsiniz.
Örneğin, bir görseli şu şekilde yükleyebilir ve onu bir modele atayabilirsiniz:
içe aktarmak pygame
sınıfoyuncu(pygame.sprite. karakter):
kesin__içinde__(öz, x, y, hız_x, hız_y, görüntü_yolu):
Süper().__içinde__()
öz.konum = (x, y)
öz.hız = (hız_x, hız_y)
öz.image = pygame.image.load (image_path)
kesingüncelleme(kendi):
öz.konum = (öz.konum[0] + öz.hız[0], öz.konum[1] + öz.hız[1])
kesinçizmek(öz, yüzey):
yüzey.blit(öz.resim, öz.konum)
kesinSola hareket et(kendi):
öz.hız = (-1, öz.hız[1])
kesinsağa hareket et(kendi):
öz.hız = (1, öz.hız[1])
Bu kod, Pygame'in Sprite sınıfını genişleten ve konum, hız ve hız özelliklerini içeren bir Player sınıfını tanımlar. görüntünün yanı sıra karakterin konumunu güncelleme, hareketli grafiği ekrana çizme ve kontrol etme yöntemleri hareket.
buna göz atabilirsin Kodun tamamı için GitHub deposu!
Sprite Sınıfıyla Karakter Yönetimini İyileştirin
Sprite sınıfı, bir oyun karakterinin tüm nitelikleri ve davranışları için uygun bir kapsayıcı sağlayarak, ekrandaki karakterin güncellenmesini, çizilmesini ve kontrol edilmesini kolaylaştırır.
Pygame oyununuzda bir Sprite sınıfı uygulayarak, oyuncularınızın genel deneyimini iyileştirebilir ve geliştirme sürecini kendiniz için kolaylaştırabilirsiniz.