Menu
CoddyTech

Методы

Часть раздела Спрайты и изображения путешествия по Pygame на Coddy. Урок 11 из 36.

Теперь числовые данные звезды хранятся в классе, но правила для них — как она падает и как её рисовать — всё ещё находятся в цикле. Функции, написанные внутри класса, называются методами, и они размещают правила рядом с данными:

class Star:
    # __init__ как прежде

    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)

Первый параметр каждого метода — это self, объект, с которым он работает. Метод вызывается для объекта через точку, а Surface из pygame передаётся как любой другой аргумент:

star.update()
star.draw(screen)

Теперь основной цикл описывает происходящее в одном кадре: обновить звезду, затем нарисовать её. У игровых объектов в программах на pygame почти всегда есть два таких метода: update и draw.

challenge icon

Задание

Средне
  1. Добавь метод update(self) в Star: он прибавляет self.speed к self.y и возвращает звезду на y = 0, когда self.y становится больше 480.
  2. Добавь draw(self, screen): белый круг радиусом 4 в точке (self.x, self.y).
  3. В цикле вызови star.update(), а после заливки — star.draw(screen).

Попробуйте сами

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 iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Спрайты и изображения

Потренируйтесь самостоятельно: Песочница Pygame