Menu
CoddyTech

Metody

Część sekcji Sprite’y i obrazy ścieżki Pygame w Coddy. Lekcja 11 z 36.

Liczby gwiazdy są teraz przechowywane w klasie, ale zasady dotyczące niej — tego, jak spada i jak jest rysowana — nadal znajdują się w pętli. Funkcje zapisane wewnątrz klasy to metody, które umieszczają zasady obok danych:

class Star:
    # __init__ jak poprzednio

    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)

Pierwszym parametrem każdej metody jest self, czyli obiekt, na którym ona działa. Wywołujesz metodę na obiekcie za pomocą kropki, a obiekt Surface z pygame jest przekazywany jak każdy inny argument:

star.update()
star.draw(screen)

Główna pętla opisuje teraz to, co dzieje się w jednej klatce: zaktualizuj gwiazdę, a następnie ją narysuj. Obiekty gry w programach pygame niemal zawsze mają te dwie metody: update i draw.

challenge icon

Wyzwanie

Średni
  1. Dodaj metodę update(self) do klasy Star: dodaje self.speed do self.y i przenosi gwiazdę z powrotem na y = 0, gdy self.y przekroczy 480.
  2. Dodaj draw(self, screen): białe koło o promieniu 4 w punkcie (self.x, self.y).
  3. W pętli wywołaj star.update(), a po wypełnieniu ekranu wywołaj star.draw(screen).

Spróbuj swoich sił

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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Sprite’y i obrazy

Poćwicz samodzielnie: Edytor online Pygame