Menu
CoddyTech

list berisi object

Termasuk bagian Sprite dan Gambar dalam perjalanan Pygame di Coddy. Pelajaran 13 dari 36.

Dua bintang bernama belum membentuk langit. Empat puluh bintang memerlukan list: buat object di dalam perulangan, lalu tambahkan masing-masing.

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))

Lalu, satu perulangan memperbarui semuanya dan perulangan lainnya menggambar semuanya:

for star in stars:
    star.update()

Di dalam for, star adalah setiap object secara bergiliran, jadi star.update() menggerakkan bintang itu dengan kecepatannya sendiri. Menambahkan seratus bintang lagi hanya mengubah satu angka; kode untuk memperbarui dan menggambar tetap sama.

Buat list sekali, sebelum perulangan game. List yang dibuat di dalam perulangan akan menjadi list baru berisi bintang-bintang baru di setiap frame, semuanya kembali ke posisi awal, sehingga tidak ada yang bergerak.

challenge icon

Tantangan

Sedang
  1. Tambahkan import random di bagian atas.
  2. Sebelum perulangan, buat stars: sebuah list berisi 40 object Star, masing-masing dengan x acak dari 0 sampai 639, y acak dari 0 sampai 479, dan kecepatan acak dari 1 sampai 3.
  3. Di dalam perulangan, perbarui setiap star di stars, lalu gambar setiap star setelah pengisian. Hapus slow dan fast.

Coba sendiri

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 iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Sprite dan Gambar

Latihan sendiri: Playground Pygame