Self Nesnenin Kendisidir
Coddy'nin Pygame Journey'sinin Sprite'lar ve Görseller bölümünün bir parçası. Ders 12 / 36.
Bir sınıf istediğin kadar nesne oluşturabilir ve her biri kendi özniteliklerini saklar. __init__ yöntemine bir hız parametresi ver; böylece iki yıldız farklı hızlarda düşebilir:
slow = Star(200, 0, 1)
fast = Star(440, 0, 3)slow.update() yazdığında Python Star.update(slow) komutunu çalıştırır: self, slow olduğundan self.y += self.speed, slow nesnesini 1 birim hareket ettirir. fast.update() ise self değeri fast olarak ayarlanmış şekilde aynı satırları çalıştırır ve onu 3 birim hareket ettirir. Tek bir yöntem, iki nesne ve hiçbiri diğerinin sayılarına dokunmaz.
Bu yüzden bir nesnenin sahip olduğu her değerin önüne self. gelmelidir. speed gibi, önünde bu olmayan bir ad, yönteme ait sıradan bir yerel değişkendir: yöntem sona erdiğinde kaybolur.
Görev
Kolay__init__işlevinespeedadlı üçüncü bir parametre ekleyin ve bunuself.speedolarak kaydedin.staryerine iki yıldız kullanın:slow = Star(200, 0, 1)vefast = Star(440, 0, 3).- Her karede her iki yıldızı da güncelleyin ve çizin.
Kendin dene
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Falling Star")
clock = pygame.time.Clock()
class Star:
def __init__(self, x, y):
self.x = x
self.y = y
self.speed = 2
def update(self):
self.y += self.speed
if self.y > 480:
self.y = 0
def draw(self, screen):
pygame.draw.circle(screen, (255, 255, 255), (self.x, self.y), 4)
star = Star(320, 0)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
star.update()
screen.fill((20, 22, 40))
star.draw(screen)
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