Menu
CoddyTech

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.

challenge icon

Görev

Kolay
  1. __init__ işlevine speed adlı üçüncü bir parametre ekleyin ve bunu self.speed olarak kaydedin.
  2. star yerine iki yıldız kullanın: slow = Star(200, 0, 1) ve fast = Star(440, 0, 3).
  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

Kendi başına pratik yap: Pygame playground