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.
Wyzwanie
Średni- Dodaj metodę
update(self)do klasyStar: dodajeself.speeddoself.yi przenosi gwiazdę z powrotem nay = 0, gdyself.yprzekroczy 480. - Dodaj
draw(self, screen): białe koło o promieniu 4 w punkcie(self.x, self.y). - W pętli wywołaj
star.update(), a po wypełnieniu ekranu wywołajstar.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()
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
1Wczytywanie obrazów
Wczytaj obrazUmieść go za pomocą RectPrzesuń obrazPowiel tłoPrzezroczyste piksele2Obracaj, odbijaj, skaluj
Obracaj wokół środkaKieruj się w stronę lotuSkaluj obrazObracaj względem oryginału5Kolizje z dokładnością do piksela
Prostokąty wydają się niesprawiedliweMaskiSprite’y z dokładnością do pikselaKołowe hitboxy6Animacja z arkuszy sprite’ów
Przytnij arkusz sprite’ówLicznik klatekAnimacja w czasieJednorazowa eksplozjaPoćwicz samodzielnie: Edytor online Pygame