Menu
CoddyTech

Ein Bild laden

Teil des Abschnitts Sprites und Bilder der Pygame-Journey von Coddy. Lektion 1 von 36.

Spiele zeichnen Bilder, nicht nur Formen. Ein Bild stammt aus einer Bilddatei, und pygame wandelt die Datei in eine Surface um, also dieselbe Art von Objekt wie das Fenster: ein Raster aus Pixeln, auf das du zeichnen kannst.

ship = pygame.image.load("assets/images/ship.png").convert_alpha()

Der Pfad ist relativ zu main.py: Das Spiel hat einen assets-Ordner neben sich, und im Tab „Assets“ neben dem Spiel werden alle darin enthaltenen Dateien aufgelistet.

convert_alpha() kopiert das Bild in das eigene Pixelformat des Fensters. Dadurch geht das Zeichnen in jedem Frame schnell und die durchsichtigen Pixel bleiben erhalten. Dafür wird das Fenster benötigt, also lade Bilder nach set_mode. Lade jedes Bild einmal vor der Schleife: Eine Datei 60-mal pro Sekunde zu lesen, verlangsamt das Spiel.

Um das Bild zu zeichnen, blit es auf das Fenster. Die Position gibt an, wo seine obere linke Ecke liegt:

screen.blit(ship, (288, 208))

Führe das Blitting nach screen.fill(...) aus, sonst übermalt die Füllung das Bild.

challenge icon

Aufgabe

Einfach
  1. Lade nach set_mode assets/images/ship.png mit .convert_alpha() in eine Variable namens ship.
  2. Füge in der Schleife nach dem Füllen ship so ein, dass sich die linke obere Ecke bei (288, 208) befindet. Das Schiff ist 64 mal 64 Pixel groß und befindet sich daher in der Mitte des 640 mal 480 Pixel großen Fensters.

Probier es selbst

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Space Images")
clock = pygame.time.Clock()

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((20, 22, 40))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Alle Lektionen in Sprites und Bilder

Übe selbstständig: Pygame-Playground