Menu
CoddyTech

method

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

Angka-angka bintang kini tersimpan di dalam class, tetapi aturannya, cara bintang bergerak jatuh dan digambar, masih berada di dalam perulangan. Fungsi yang ditulis di dalam class disebut method, dan fungsi tersebut menempatkan aturan di dekat datanya:

class Star:
    # __init__ seperti sebelumnya

    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)

Parameter pertama setiap method adalah self, object yang digunakan method tersebut. Kamu memanggil method pada object dengan tanda titik, dan Surface dari pygame diberikan seperti argumen lainnya:

star.update()
star.draw(screen)

Sekarang, perulangan utama menggambarkan apa yang terjadi dalam satu frame: perbarui bintang, lalu gambar bintang. Object game dalam program pygame hampir selalu memiliki dua method ini, update dan draw.

challenge icon

Tantangan

Sedang
  1. Tambahkan method update(self) ke Star: method ini menambahkan self.speed ke self.y dan mengembalikan bintang ke y = 0 setelah self.y lebih dari 480.
  2. Tambahkan draw(self, screen): lingkaran putih dengan radius 4 di (self.x, self.y).
  3. Di dalam perulangan, panggil star.update() dan, setelah pengisian, panggil star.draw(screen).

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


star = Star(320, 0)

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

    star.y += star.speed
    if star.y > 480:
        star.y = 0

    screen.fill((20, 22, 40))
    pygame.draw.circle(screen, (255, 255, 255), (star.x, star.y), 4)
    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