Buchstaben mit Bedeutung
Teil des Abschnitts Spielwelten der Pygame-Journey von Coddy. Lektion 3 von 35.
Eine Karte kann mehr als nur Wände enthalten. Gib jeder Art von Objekt ihr eigenes Zeichen. Hier ist C eine Münze.
LEVEL = [
"################",
"#..............#",
"#.C..####...C..#",
...
]Die Schleifen, die nach den Wänden suchen, finden auch die Münzen: Prüfe jedes Zeichen mit if und elif und füge jedes Objekt seiner eigenen Liste hinzu.
elif char == "C":
coins.append(pygame.Rect(col * TILE + 10, row * TILE + 10, 16, 16))Eine Münze ist kleiner als ihr Feld. Um eine 16 Pixel große Münze in einem 36 Pixel großen Feld zu zentrieren, setze sie 10 Pixel vom linken und oberen Rand des Felds entfernt an: (36 - 16) / 2 = 10.
Zeichen, nach denen du nicht suchst, bewirken nichts, daher bleiben die .-Felder leer.
Aufgabe
Einfach- Erstelle neben
wallseine Liste namenscoins. - Füge in den Kartenschleifen für jedes
Cpygame.Rect(col * TILE + 10, row * TILE + 10, 16, 16)zucoinshinzu. - Zeichne in der Spielschleife nach den Wänden jede Münze in
COIN-Gelb,(255, 196, 0).
Probier es selbst
import pygame
TILE = 36
WALL = (120, 90, 60)
PLAYER = (80, 200, 120)
LEVEL = [
"################",
"#..............#",
"#.C..####...C..#",
"#..............#",
"#....C....##...#",
"#..##.....##.C.#",
"#..##..........#",
"#.C.......###..#",
"#..............#",
"####..####..####",
]
pygame.init()
screen = pygame.display.set_mode((576, 360))
pygame.display.set_caption("Map from Text")
clock = pygame.time.Clock()
walls = []
for row, line in enumerate(LEVEL):
for col, char in enumerate(line):
if char == "#":
walls.append(pygame.Rect(col * TILE, row * TILE, TILE, TILE))
player = pygame.Rect(40, 40, 28, 28)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
player.x -= 4
if keys[pygame.K_RIGHT]:
player.x += 4
if keys[pygame.K_UP]:
player.y -= 4
if keys[pygame.K_DOWN]:
player.y += 4
screen.fill((30, 30, 46))
for wall in walls:
pygame.draw.rect(screen, WALL, wall)
pygame.draw.rect(screen, PLAYER, player)
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