Transparente Pixel
Teil des Abschnitts Sprites und Bilder der Pygame-Journey von Coddy. Lektion 5 von 36.
Eine Bilddatei ist immer ein Rechteck, aber ein gegnerisches Raumschiff nicht. Die Pixel darum herum sind transparent: Jedes Pixel einer PNG-Datei hat eine vierte Zahl, seinen Alpha-Wert, von 0 (durchsichtig) bis 255 (undurchsichtig).
Das Starterprogramm lädt die drei Gegner mit convert(), wodurch der Alpha-Wert verworfen wird: Jedes durchsichtige Pixel wird schwarz, und jeder Gegner sitzt in einem schwarzen Kasten. convert_alpha() behält den Alpha-Wert bei, sodass nur die undurchsichtigen Pixel das Fenster bedecken. Verwende es für alles, was kein ausgefülltes Rechteck ist.
Das Rect ist weiterhin das gesamte Rechteck. Zeichne seinen Umriss, um zu sehen, wie viel Platz das Bild einnimmt:
rect = red.get_rect(topleft=(128, 200))
screen.blit(red, rect)
pygame.draw.rect(screen, (90, 90, 120), rect, 1)Die letzte Zahl, 1, zeichnet einen 1 Pixel breiten Umriss, statt das Rect auszufüllen. Achte auf die Lücken zwischen dem Umriss und dem Raumschiff. Zwei Rects können sich überlappen, obwohl sich die Bilder darin nicht berühren, und ein Kollisionscheck mit Rects meldet trotzdem einen Treffer. Kapitel 5 behebt das.
Aufgabe
Einfach- Lade die drei Gegner mit
.convert_alpha()statt mit.convert(), damit die schwarzen Kästchen verschwinden. - Umrande das Rect jedes Gegners mit
(90, 90, 120), 1 Pixel breit. Die Gegner bleiben bei(128, 200),(288, 200)und(448, 200).
Probier es selbst
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()
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Sprites und Bilder
1Bilder laden
Ein Bild ladenMit einem Rect platzierenDas Bild bewegenEinen Hintergrund kachelnTransparente Pixel2Drehen, Spiegeln, Skalieren
Um den Mittelpunkt drehenIn Flugrichtung ausrichtenEin Bild skalierenVom Original aus drehen3Klassen für Spielobjekte
Deine erste KlasseMethodenSelf ist das ObjektEine Liste von ObjektenObjekte mit BildernEine Unterklasse6Animation mit Sprite Sheets
Ein Sprite Sheet zuschneidenEin Frame-ZählerMit Zeit animierenEine einmalige ExplosionÜbe selbstständig: Pygame-Playground