Menu
CoddyTech

Baue die Höhlen

Teil des Abschnitts Spielwelten der Pygame-Journey von Coddy. Lektion 28 von 35.

Moss Caves ist dein eigenes Plattformspiel: Laufe durch eine moosbewachsene Höhle, sammle Münzen, springe über Stacheln und Gruben, zertrample Blobs, finde den Schlüssel, öffne die Tür und erreiche die Flagge. Jeder Schritt fügt einen Teil hinzu, der auf dem aufbaut, was du in diesem Abschnitt erstellt hast.

Das ganze Level ist die Karte im Starterprojekt und 64 Spalten breit. # ist Boden, P der Start und die anderen Buchstaben stehen für Dinge, die du hinzufügen wirst: C Münzen, ^ Stacheln, E Blobs, K den Schlüssel, D die Tür, F die Flagge. Bis ein Schritt einen Buchstaben ausliest, bleibt dessen Kachel leer.

Erstelle zuerst den Boden. Ein Durchlauf über die Karte füllt walls mit Rects für Kollisionen und tiles mit (image, Rect)-Paaren zum Zeichnen und wählt dabei mit solid() Gras, Erde oder eine Randkachel aus, wie im Kapitel „Tiles“:

rect = pygame.Rect(col * TILE, row * TILE, TILE, TILE)
if char == "#":
    # Bild wie zuvor mit solid() auswählen
    walls.append(rect)
    tiles.append((image, rect))
elif char == "P":
    start = rect.midbottom

Der Spieler steht auf start, der unteren Mitte der P-Kachel.

challenge icon

Aufgabe

Mittel
  1. Erzeuge vor der Spielschleife walls und tiles und durchlaufe dann die Karte. Wähle für jedes # mithilfe von solid() wie bei den Randkacheln dirt_img, grass_left_img, grass_right_img oder grass_img aus und füge das Rect zu walls und das Paar zu tiles hinzu.
  2. Setze für P start auf midbottom der Kachel.
  3. Erzeuge player = player_img.get_rect(midbottom=start).
  4. Zeichne in der Spielschleife nach dem Hintergrund jede Kachel an ihrem Rect und danach den Spieler.

Probier es selbst

import pygame

TILE = 36
WIDTH, HEIGHT = 576, 360

LEVEL = [
    "................................................................",
    "................................................................",
    "................................................................",
    "................................................................",
    "#..............................................................#",
    "#....................C.........................#####...........#",
    "#......CC...C................CC.....CC.........#####.....CC....#",
    "#....................#.........................D...............#",
    "#.P.........#...E....#...^.......K......E......D.C....^......F.#",
    "#######..####################..##########################..#####",
]

pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Moss Caves")
clock = pygame.time.Clock()


def load(name):
    return pygame.image.load("assets/images/" + name).convert_alpha()


background = pygame.image.load("assets/backgrounds/forest.png").convert_alpha()
grass_img = load("grass.png")
grass_left_img = load("grass_left.png")
grass_right_img = load("grass_right.png")
dirt_img = load("dirt.png")
player_img = load("player.png")


def solid(row, col):
    if row < 0 or row >= len(LEVEL) or col < 0 or col >= len(LEVEL[0]):
        return False
    return LEVEL[row][col] == "#"


running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    for y in range(0, HEIGHT, 72):
        for x in range(0, WIDTH, 72):
            screen.blit(background, (x, y))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Spielwelten

Übe selbstständig: Pygame-Playground