Menu
CoddyTech

Einen Hintergrund kacheln

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

Eine einfarbige Fläche ergibt einen langweiligen Himmel. assets/backgrounds/sky.png ist ein 72 mal 72 Pixel großes Bild, das zum Wiederholen erstellt wurde: Lege Kopien nebeneinander, und die Kanten schließen nahtlos aneinander an. Das Fenster mit Kopien eines kleinen Bildes zu bedecken, nennt man Kacheln.

Zwei Schleifen liefern jede obere linke Ecke, jeweils eine Rasterzeile auf einmal:

for x in range(0, 640, 72):
    for y in range(0, 480, 72):
        screen.blit(tile, (x, y))

range(0, 640, 72) ergibt 0, 72, 144 und so weiter bis 576. Die Kopie bei 576 reicht bis 648, über den Rand hinaus: pygame zeichnet den Teil innerhalb des Fensters und lässt den Rest aus, sodass die letzte Spalte sauber abgeschnitten wird.

Die Kacheln bedecken das ganze Fenster und ersetzen daher screen.fill: Zeichne sie zuerst und dann alles andere darüber. Dieses Bild hat keine transparenten Pixel, lade es daher mit .convert(), der Version von convert_alpha() für undurchsichtige Bilder.

challenge icon

Aufgabe

Einfach
  1. Lade nach set_mode assets/backgrounds/sky.png mit .convert() in eine Variable namens tile.
  2. Ersetze screen.fill(...) durch die beiden Schleifen, die tile bei jedem (x, y) blitten, wobei x in range(0, 640, 72) und y in range(0, 480, 72) liegt.
  3. Zeichne das Schiff weiterhin nach den Kacheln.

Probier es selbst

import pygame

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

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

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

    screen.fill((20, 22, 40))
    screen.blit(ship, (288, 360))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Alle Lektionen in Sprites und Bilder

Übe selbstständig: Pygame-Playground