Dispare Lasers
Parte da seção Sprites e imagens do Journey de Pygame da Coddy. Lição 30 de 36.
A nave dispara lasers diretamente para cima. Um laser é um sprite que começa na ponta da nave, voa 10 pixels por quadro e se remove assim que sai da janela:
class Laser(pygame.sprite.Sprite):
def __init__(self, x, y):
super().__init__()
self.image = laser_image
self.rect = self.image.get_rect(midbottom=(x, y))
def update(self):
self.rect.y -= 10
if self.rect.bottom < 0:
self.kill()A ponta da nave fica no meio da borda superior, então um novo laser é Laser(player.rect.centerx, player.rect.top): o meio da parte inferior dele fica nesse ponto.
Todos os lasers ficam em um grupo, lasers. Pressionar Espaço adiciona um laser ao grupo no loop de eventos, então cada pressionamento dispara uma vez. O grupo atualiza e desenha todos eles; desenhe-os antes da nave para que saiam de baixo da ponta dela.
Desafio
Médio- Carregue
assets/images/laser.pngemlaser_imagee escreva a classeLaseracima. - Crie
lasers = pygame.sprite.Group(). - Em um evento
KEYDOWNpara a tecla Espaço, adicioneLaser(player.rect.centerx, player.rect.top)alasers. - A cada quadro, execute
lasers.update()e desenhelasersantes da nave.
Experimente você mesmo
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Star Patrol")
clock = pygame.time.Clock()
ship_image = pygame.image.load("assets/images/ship.png").convert_alpha()
class Player(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = ship_image
self.rect = self.image.get_rect(midbottom=(320, 470))
def update(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.rect.x -= 6
if keys[pygame.K_RIGHT]:
self.rect.x += 6
self.rect.clamp_ip(screen.get_rect())
player = Player()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
player.update()
screen.fill((12, 14, 30))
screen.blit(player.image, player.rect)
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 transparentes4Sprites e Grupos
A classe SpriteGruposRemover com kill()Capturar com spritecollideGrupo contra grupo7Patrulha Espacial
A Nave de PatrulhaDispare Lasers2Girar, 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