Sprite Sınıfı
Coddy'nin Pygame Journey'sinin Sprite'lar ve Görseller bölümünün bir parçası. Ders 16 / 36.
Şimdiye kadarki her oyun nesnesinin bir görseli, bir Rect'i, bir update yöntemi ve çizilme yolu vardı. pygame tam olarak bunun için tasarlanmış bir sınıfa sahip: pygame.sprite.Sprite. Oyun nesnelerin bu sınıfın alt sınıfları hâline gelir:
class Player(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = ship_image
self.rect = self.image.get_rect(midbottom=(320, 470))
def update(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.rect.x -= 6Üç kural. Önce super().__init__() çağrısını yap: Sprite sınıfının içinde ihtiyaç duyduğu şeyleri hazırlar. Görseli tam olarak self.image, konumu da self.rect olarak adlandır: pygame'in kendi kodu bu iki adı okur. Her kareye ait kuralları update içine koy.
Gemi görseli en üstte bir kez ship_image olarak yüklenir ve sınıf bunu kullanır. Şimdilik, sprite'ı bir blit ile çiz: screen.blit(player.image, player.rect). Sonraki derste pygame'in onu çizmesini sağlayacaksın.
Görev
Orta- Yukarıdaki gibi
class Player(pygame.sprite.Sprite)yaz:self.image,ship_imageolur;self.rectdikdörtgeninin alt orta noktası(320, 470)konumundadır. update, ok tuşlarıyla Rect'i 6 piksel sola veya sağa hareket ettirir ve pencere sınırları içinde tutar: başlangıç kodundaki satırları bunun içine taşı.player = Player()oluştur, her karedeplayer.update()çağır veplayer.imageöğesiniplayer.rectkonumunda blit et.
Kendin dene
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Sprite Ship")
clock = pygame.time.Clock()
ship_image = pygame.image.load("assets/images/ship.png").convert_alpha()
ship_rect = ship_image.get_rect(midbottom=(320, 470))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
ship_rect.x -= 6
if keys[pygame.K_RIGHT]:
ship_rect.x += 6
ship_rect.clamp_ip(screen.get_rect())
screen.fill((20, 22, 40))
screen.blit(ship_image, ship_rect)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Sprite'lar ve Görseller bölümündeki tüm dersler
4Sprite'lar ve Gruplar
Sprite SınıfıGruplarkill() ile Kaldırmaspritecollide ile YakalamaGruba Karşı Grup2Döndür, Yansıt, Ölçekle
Merkez Etrafında DöndürUçtuğun Yöne DönBir Görseli ÖlçekleOrijinalinden Döndür5Piksel Hassasiyetinde Çarpışmalar
Dikdörtgenler Haksız HissettiriyorMaskelerPiksel Hassasiyetinde Sprite'larDaire Hitbox'ları3Oyun Nesneleri için Sınıflar
İlk SınıfınızMetotlarSelf Nesnenin KendisidirNesneler ListesiGörselli NesnelerBir Alt Sınıf6Sprite Sheet'lerden Animasyon
Bir Sprite Sheet'i KesmekBir Kare SayacıZamanla AnimasyonTek Seferlik Bir PatlamaKendi başına pratik yap: Pygame playground