Spara con i laser
Fa parte della sezione Sprite e immagini del percorso Pygame di Coddy. Lezione 30 di 36.
La nave spara laser dritti verso l'alto. Un laser è uno sprite che parte dalla punta della nave, vola a 10 pixel per fotogramma e si rimuove una volta uscito dalla finestra:
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()La punta della nave è il centro del suo bordo superiore, quindi un nuovo laser è Laser(player.rect.centerx, player.rect.top): il suo punto medio inferiore si trova su quel punto.
Tutti i laser vivono in un unico gruppo, lasers. Premendo la barra spaziatrice se ne aggiunge uno al gruppo, nel ciclo degli eventi, così ogni pressione spara una volta. Il gruppo li aggiorna e li disegna tutti; disegnali prima della nave, così escono da sotto la sua punta.
Sfida
Medio- Carica
assets/images/laser.pnginlaser_imagee scrivi la classeLaserqui sopra. - Crea
lasers = pygame.sprite.Group(). - In caso di evento
KEYDOWNper Space, aggiungiLaser(player.rect.centerx, player.rect.top)alasers. - A ogni fotogramma, esegui
lasers.update()e disegnalasersprima dell'astronave.
Provalo tu
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()
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Sprite e immagini
1Caricare immagini
Caricare un'immaginePosizionarla con un rettangoloSpostare l'immagineRipetere uno sfondoPixel trasparenti4Sprite e gruppi
La classe SpriteGruppiRimuovere con kill()Catturare con spritecollideGruppo contro gruppo7La pattuglia stellare
La nave di pattugliaSpara con i laser2Ruota, capovolgi, ridimensiona
Ruotare attorno al centroRivolgiti nella direzione in cui voliRidimensionare un'immagineRuotare dall'originale3Classi per gli oggetti del gioco
La tua prima classeMetodiSelf è l’oggettoUna lista di oggettiOggetti con immaginiUna sottoclasse6Animazione con gli sprite sheet
Ritagliare uno sprite sheetUn contatore di frameAnimare con il tempoUn’esplosione a riproduzione singolaEsercitati da solo: Playground Pygame