Menu
CoddyTech

Wo der Spieler startet

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

Ein Level legt fest, wo der Spieler startet. Füge also auch der Karte ein P hinzu. Beim Auslesen der Karte durch die Schleifen gibt das P-Feld die Startposition des Spielers an.

elif char == "P":
    player = pygame.Rect(col * TILE + 4, row * TILE + 4, 28, 28)

Der Spieler ist ein Quadrat mit einer Seitenlänge von 28 Pixeln und startet daher 4 Pixel von der Ecke des Feldes entfernt, genau in der Mitte des Feldes: (36 - 28) / 2 = 4. Wenn du jetzt das P im Text verschiebst, ändert sich die Startposition: Du musst keine Zahlen ausrechnen.

Die Schleife wird vor der Spielschleife ausgeführt, daher existiert player, wenn die Spielschleife ihn bewegt. Achte darauf, dass nach den Schleifen nichts player erneut festlegt, sonst gilt diese spätere Zeile.

challenge icon

Aufgabe

Einfach

Die Karte enthält jetzt ein P. Der Startercode setzt den Spieler an eine feste Position (40, 40).

  1. Erstelle in den Kartenschleifen für P player = pygame.Rect(col * TILE + 4, row * TILE + 4, 28, 28).
  2. Entferne die Zeile, die den Spieler an die Position (40, 40) setzt.

Probier es selbst

import pygame

TILE = 36
WALL = (120, 90, 60)
COIN = (255, 196, 0)
PLAYER = (80, 200, 120)

LEVEL = [
    "################",
    "#..............#",
    "#.C..####...C..#",
    "#..............#",
    "#....C....##...#",
    "#..##.....##.C.#",
    "#..##..P.......#",
    "#.C.......###..#",
    "#..............#",
    "####..####..####",
]

pygame.init()
screen = pygame.display.set_mode((576, 360))
pygame.display.set_caption("Map from Text")
clock = pygame.time.Clock()

walls = []
coins = []
for row, line in enumerate(LEVEL):
    for col, char in enumerate(line):
        if char == "#":
            walls.append(pygame.Rect(col * TILE, row * TILE, TILE, TILE))
        elif char == "C":
            coins.append(pygame.Rect(col * TILE + 10, row * TILE + 10, 16, 16))
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)
    for coin in coins:
        pygame.draw.rect(screen, COIN, coin)
    pygame.draw.rect(screen, PLAYER, player)
    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