Pixel trasparenti
Fa parte della sezione Sprite e immagini del percorso Pygame di Coddy. Lezione 5 di 36.
Un file immagine è sempre un rettangolo, ma una nave nemica no. I pixel intorno a essa sono trasparenti: ogni pixel di un PNG ha un quarto numero, il suo alfa, da 0 (trasparente) a 255 (opaco).
Il codice iniziale carica i tre nemici con convert(), che elimina l’alfa: ogni pixel trasparente diventa nero e ogni nemico si trova in un riquadro nero. convert_alpha() mantiene l’alfa, quindi solo i pixel opachi coprono la finestra. Usalo per qualsiasi cosa che non sia un rettangolo pieno.
Il Rect è ancora l’intero rettangolo. Tracciane il contorno per vedere il riquadro occupato dall’immagine:
rect = red.get_rect(topleft=(128, 200))
screen.blit(red, rect)
pygame.draw.rect(screen, (90, 90, 120), rect, 1)L’ultimo numero, 1, traccia il contorno di 1 pixel invece di riempire il Rect. Guarda gli spazi tra il contorno e la nave. Due Rect possono sovrapporsi anche se le immagini al loro interno non si toccano, e un test di collisione con i Rect indica comunque che si sono scontrati. Il capitolo 5 risolve questo problema.
Sfida
Facile- Carica i tre nemici con
.convert_alpha()invece di.convert(), così i riquadri neri scompaiono. - Dopo ogni nemico, traccia il contorno del suo Rect in
(90, 90, 120), largo 1 pixel. I nemici restano in(128, 200),(288, 200)e(448, 200).
Provalo tu
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Three Enemies")
clock = pygame.time.Clock()
red = pygame.image.load("assets/images/enemy_red.png").convert()
green = pygame.image.load("assets/images/enemy_green.png").convert()
yellow = pygame.image.load("assets/images/enemy_yellow.png").convert()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((20, 22, 40))
screen.blit(red, (128, 200))
screen.blit(green, (288, 200))
screen.blit(yellow, (448, 200))
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 trasparenti2Ruota, 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