Menu
CoddyTech

Métodos

Parte da seção Sprites e imagens do Journey de Pygame da Coddy. Lição 11 de 36.

Os números da estrela agora ficam na classe, mas as regras para eles, como ela cai e como é desenhada, ainda estão no loop. Funções escritas dentro de uma classe são métodos, e elas colocam as regras junto dos dados:

class Star:
    # __init__ como antes

    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)

O primeiro parâmetro de cada método é self, o objeto no qual ele opera. Você chama um método em um objeto usando um ponto, e o Surface do pygame é passado como qualquer outro argumento:

star.update()
star.draw(screen)

Agora, o loop principal descreve o que acontece em um quadro: atualizar a estrela e, em seguida, desenhá-la. Objetos de jogo em programas pygame quase sempre têm estes dois métodos, update e draw.

challenge icon

Desafio

Médio
  1. Adicione um método update(self) a Star: ele adiciona self.speed a self.y e coloca a estrela de volta em y = 0 assim que self.y ultrapassar 480.
  2. Adicione draw(self, screen): o círculo branco, com raio 4, em (self.x, self.y).
  3. No loop, chame star.update() e, depois do preenchimento, star.draw(screen).

Experimente você mesmo

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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Sprites e imagens

Pratique por conta própria: Playground de Pygame