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.midbottomDer Spieler steht auf start, der unteren Mitte der P-Kachel.
Aufgabe
Mittel- Erzeuge vor der Spielschleife
wallsundtilesund durchlaufe dann die Karte. Wähle für jedes#mithilfe vonsolid()wie bei den Randkachelndirt_img,grass_left_img,grass_right_imgodergrass_imgaus und füge das Rect zuwallsund das Paar zutileshinzu. - Setze für
Pstartaufmidbottomder Kachel. - Erzeuge
player = player_img.get_rect(midbottom=start). - 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()
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
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