Menu
CoddyTech

Nesneler Listesi

Coddy'nin Pygame Journey'sinin Sprite'lar ve Görseller bölümünün bir parçası. Ders 13 / 36.

Adlandırılmış iki yıldız bir gökyüzü oluşturmaz. Kırk yıldız için bir liste gerekir: nesneleri bir döngüde oluştur ve her birini listeye ekle.

stars = []
for i in range(40):
    x = random.randint(0, 639)
    y = random.randint(0, 479)
    speed = random.randint(1, 3)
    stars.append(Star(x, y, speed))

Ardından bir döngü hepsini günceller, başka bir döngü de hepsini çizer:

for star in stars:
    star.update()

for döngüsünün içinde star, sırası gelen her bir nesnedir; bu nedenle star.update(), o yıldızı kendi hızıyla hareket ettirir. Yüz yıldız daha eklemek yalnızca bir sayıyı değiştirmeyi gerektirir; güncelleme ve çizim kodu aynı kalır.

Listeyi oyun döngüsünden önce, bir kez oluştur. Döngünün içinde oluşturulan bir liste, her karede yeni yıldızlardan oluşan yeni bir listedir; yıldızların hepsi başlangıç konumlarına döner ve hiçbir şey hareket etmez.

challenge icon

Görev

Orta
  1. En üste import random ekle.
  2. Döngüden önce, her biri 0 ile 639 arasında rastgele bir x değerine, 0 ile 479 arasında rastgele bir y değerine ve 1 ile 3 arasında rastgele bir hıza sahip 40 Star nesnesinden oluşan bir stars listesi oluştur.
  3. Döngüde, stars içindeki her yıldızı güncelle ve dolgu işleminden sonra her yıldızı çiz. slow ve fast öğelerini kaldır.

Kendin dene

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Falling Stars")
clock = pygame.time.Clock()

class Star:
    def __init__(self, x, y, speed):
        self.x = x
        self.y = y
        self.speed = speed

    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)


slow = Star(200, 0, 1)
fast = Star(440, 0, 3)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    slow.update()
    fast.update()

    screen.fill((20, 22, 40))
    slow.draw(screen)
    fast.draw(screen)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Sprite'lar ve Görseller bölümündeki tüm dersler

Kendi başına pratik yap: Pygame playground