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.
Desafio
Médio- Adicione um método
update(self)aStar: ele adicionaself.speedaself.ye coloca a estrela de volta emy = 0assim queself.yultrapassar 480. - Adicione
draw(self, screen): o círculo branco, com raio 4, em(self.x, self.y). - 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()
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
1Carregando imagens
Carregue uma imagemPosicione-a com um RectMova a imagemLadrilhe o plano de fundoPixels transparentes2Girar, Inverter, Redimensionar
Girar em torno do centroFicar de frente para a direção do vooRedimensionar uma imagemGirar a partir do original3Classes para Objetos de Jogos
Sua primeira classeMétodosSelf é o objetoUma lista de objetosObjetos com imagensUma subclasse6Animação com Sprite Sheets
Recorte uma Sprite SheetUm contador de quadrosAnime com o tempoUma explosão de disparo únicoPratique por conta própria: Playground de Pygame