Gras obenauf
Teil des Abschnitts Spielwelten der Pygame-Journey von Coddy. Lektion 7 von 35.
Der Boden hat Gras an der Oberfläche und Erde darunter. Anhand der Karte kannst du erkennen, was was ist: Ein #, über dem sich ein weiteres # befindet, liegt unter der Oberfläche.
if row == 0 or LEVEL[row - 1][col] != "#":
image = grass_img
else:
image = dirt_img
tiles.append((image, pygame.Rect(x, y, TILE, TILE)))LEVEL[row - 1][col] ist die Kachel darüber. Für Zeile 0 ist eine eigene Prüfung nötig: Dort ist row - 1 gleich -1, und Python liest den Index -1 als letztes Element einer Liste, also als unterste Zeile. Ohne row == 0 würde eine Kachel in der obersten Zeile zu Erde werden, wenn sich in der untersten Zeile ein # darunter befindet.
Aufgabe
Einfach- Lade
assets/images/grass.pngingrass_imgundassets/images/dirt.pngindirt_img. - Wähle für jedes
#grass_img, wenn es sich in Zeile 0 befindet oder das Feld darüber kein#ist, andernfallsdirt_img. - Füge das ausgewählte Bild zu
tilesstatt zublock_imghinzu.
Probier es selbst
import pygame
TILE = 36
LEVEL = [
"###.............",
"###.............",
"..........C.....",
".........####...",
"..C.............",
".####......C....",
"..........###...",
"#....C.........#",
"###..##...###.##",
"######..########",
]
pygame.init()
screen = pygame.display.set_mode((576, 360))
pygame.display.set_caption("Tiles")
clock = pygame.time.Clock()
grass_img = pygame.image.load("assets/images/grass.png").convert_alpha()
dirt_img = pygame.image.load("assets/images/dirt.png").convert_alpha()
coin_img = pygame.image.load("assets/images/coin.png").convert_alpha()
tiles = []
for row, line in enumerate(LEVEL):
for col, char in enumerate(line):
x, y = col * TILE, row * TILE
if char == "#":
tiles.append((grass_img, pygame.Rect(x, y, TILE, TILE)))
elif char == "C":
tiles.append((coin_img, pygame.Rect(x, y, TILE, TILE)))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((140, 200, 240))
for image, rect in tiles:
screen.blit(image, rect)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Alle Lektionen in Spielwelten
1Karten aus Text
Ein Level in TextformZeilen und SpaltenBuchstaben mit BedeutungWo der Spieler startetEin Bildschirm nach dem anderen4Kollisionen mit Plattformen
Wände links und rechtsAuf Plattformen landenStoß dir den KopfAus dem Level fallenEine Achse nach der anderen3Schwerkraft und Springen
Fallen mit SchwerkraftVom Boden springenKurze SprüngeEine maximale FallgeschwindigkeitSprungpuffer6Patrouillierende Gegner
Ein patrouillierender BlobDrauftreten oder getroffen werdenEin GehzyklusGegner aus der KarteÜbe selbstständig: Pygame-Playground