Pixels transparentes
Parte da seção Sprites e imagens do Journey de Pygame da Coddy. Lição 5 de 36.
Um arquivo de imagem é sempre um retângulo, mas uma nave inimiga não é. Os pixels ao redor dela são transparentes: cada pixel de um PNG tem um quarto número, seu alfa, de 0 (transparente) a 255 (opaco).
O código inicial carrega os três inimigos com convert(), que descarta o alfa: cada pixel transparente fica preto, e cada inimigo fica dentro de uma caixa preta. convert_alpha() mantém o alfa, então apenas os pixels opacos cobrem a janela. Use-o para tudo que não seja um retângulo sólido.
O Rect ainda é o retângulo inteiro. Contorne-o para ver a caixa ocupada pela imagem:
rect = red.get_rect(topleft=(128, 200))
screen.blit(red, rect)
pygame.draw.rect(screen, (90, 90, 120), rect, 1)O último número, 1, desenha um contorno de 1 pixel em vez de preencher o Rect. Observe os espaços entre o contorno e a nave. Dois Rects podem se sobrepor mesmo quando as imagens dentro deles não se tocam, e um teste de colisão com Rects ainda diz que eles colidiram. O Capítulo 5 resolve isso.
Desafio
Fácil- Carregue os três inimigos com
.convert_alpha()em vez de.convert(), para remover os retângulos pretos. - Depois de cada inimigo, contorne seu Rect em
(90, 90, 120), com 1 pixel de largura. Os inimigos permanecem em(128, 200),(288, 200)e(448, 200).
Experimente você mesmo
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()
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