La classe Sprite
Fa parte della sezione Sprite e immagini del percorso Pygame di Coddy. Lezione 16 di 36.
Finora tutti gli oggetti di gioco hanno avuto un’immagine, un Rect, un update e un modo per essere disegnati. pygame ha una classe creata proprio per questo: pygame.sprite.Sprite. I tuoi oggetti di gioco diventano sottoclassi di questa classe:
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 -= 6Tre regole. Chiama prima super().__init__(): configura ciò di cui la classe Sprite ha bisogno al suo interno. Chiama l’immagine self.image e la posizione self.rect, esattamente così: il codice di pygame legge questi due nomi. Inserisci le regole da applicare a ogni fotogramma in update.
L’immagine dell’astronave viene caricata una sola volta all’inizio, come ship_image, e la classe la usa. Per ora, disegna lo sprite con un blit: screen.blit(player.image, player.rect). Nella prossima lezione, pygame lo disegnerà al posto tuo.
Sfida
Medio- Scrivi
class Player(pygame.sprite.Sprite)come sopra:self.imageèship_image, il fondo al centro diself.rectsi trova in(320, 470). - Il suo
updatesposta il Rect di 6 pixel a sinistra o a destra con le frecce e lo mantiene all'interno della finestra: sposta al suo interno le righe iniziali. - Crea
player = Player(), chiamaplayer.update()a ogni fotogramma e disegnaplayer.imageinplayer.rect.
Provalo tu
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Sprite Ship")
clock = pygame.time.Clock()
ship_image = pygame.image.load("assets/images/ship.png").convert_alpha()
ship_rect = ship_image.get_rect(midbottom=(320, 470))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
ship_rect.x -= 6
if keys[pygame.K_RIGHT]:
ship_rect.x += 6
ship_rect.clamp_ip(screen.get_rect())
screen.fill((20, 22, 40))
screen.blit(ship_image, ship_rect)
pygame.display.flip()
clock.tick(60)
pygame.quit()
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 gruppo2Ruota, 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