Uma lista de objetos
Parte da seção Sprites e imagens do Journey de Pygame da Coddy. Lição 13 de 36.
Duas estrelas nomeadas não formam um céu. Quarenta precisam de uma lista: crie os objetos em um loop e acrescente cada um deles.
stars = []
for i in range(40):
x = random.randint(0, 639)
y = random.randint(0, 479)
speed = random.randint(1, 3)
stars.append(Star(x, y, speed))Então, um loop atualiza todas elas e outro desenha todas elas:
for star in stars:
star.update()Dentro do for, star é cada objeto, um de cada vez, então star.update() move aquela estrela com sua própria velocidade. Adicionar mais cem estrelas muda um número; o código de atualização e desenho continua igual.
Crie a lista uma vez, antes do loop do jogo. Uma lista criada dentro do loop é uma nova lista de novas estrelas a cada quadro, todas de volta às posições iniciais, então nada se move.
Desafio
Médio- Adicione
import randomno início. - Antes do loop, crie
stars: uma lista de 40 objetos Star, cada um com um x aleatório de 0 a 639, um y aleatório de 0 a 479 e uma velocidade aleatória de 1 a 3. - No loop, atualize cada estrela em
starse desenhe cada estrela após o fill. Removaslowefast.
Experimente você mesmo
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Falling Stars")
clock = pygame.time.Clock()
class Star:
def __init__(self, x, y, speed):
self.x = x
self.y = y
self.speed = speed
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)
slow = Star(200, 0, 1)
fast = Star(440, 0, 3)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
slow.update()
fast.update()
screen.fill((20, 22, 40))
slow.draw(screen)
fast.draw(screen)
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