Menu
CoddyTech

self adalah object

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

Satu class bisa membuat objek sebanyak yang kamu mau, dan masing-masing memiliki atributnya sendiri. Beri __init__ parameter kecepatan, lalu dua bintang bisa jatuh dengan kecepatan yang berbeda:

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

Saat kamu menulis slow.update(), Python menjalankan Star.update(slow): self adalah slow, jadi self.y += self.speed menggerakkan slow sejauh 1. fast.update() menjalankan baris yang sama dengan self yang diatur ke fast, lalu menggerakkannya sejauh 3. Satu method, dua objek, dan keduanya tidak mengubah angka milik objek yang lain.

Itulah sebabnya setiap nilai yang dimiliki objek harus diawali dengan self.. Nama tanpa itu, seperti speed, adalah variabel lokal biasa milik method: variabel itu hilang saat method berakhir.

challenge icon

Tantangan

Mudah
  1. Beri __init__ parameter ketiga, speed, lalu simpan sebagai self.speed.
  2. Ganti star dengan dua bintang: slow = Star(200, 0, 1) dan fast = Star(440, 0, 3).
  3. Perbarui dan gambar kedua bintang di setiap frame.

Coba sendiri

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

Semua pelajaran di Sprite dan Gambar

Latihan sendiri: Playground Pygame