Zum Inhalt springen
BetaEN
Lektion 9 von 35Python

Python · Lektion 9 · 45 Minuten

Projekt: Textadventure

Das lernst du

  • Eine Spielschleife mit while bauen
  • Eine Spielwelt als verschachteltes Dictionary speichern
  • Eingaben prüfen und verständlich reagieren

Dein erstes richtiges Spiel

Jetzt baust du alles zusammen, was du gelernt hast: Variablen, if, Schleifen, Dictionaries und input(). Das Ergebnis ist ein Textadventure – ein Spiel, in dem man sich mit Befehlen durch eine Welt bewegt. Solche Spiele gab es schon, bevor Computer Grafik konnten!

Die Welt als Dictionary

Jeder Raum ist ein Schlüssel. Sein Wert ist wieder ein Dictionary: Welche Richtung führt in welchen Raum?

welt = {
    "Flur": {"norden": "Küche", "osten": "Labor"},
    "Küche": {"süden": "Flur"},
    "Labor": {"westen": "Flur"},
}

raum = "Flur"
print(welt[raum])
print(welt[raum]["osten"])
print("norden" in welt["Labor"])

welt[raum]["osten"] liest man von links nach rechts: erst der Raum, dann die Richtung.

Die Spielschleife

Fast jedes Spiel hat eine Spielschleife: Zustand zeigen → Eingabe lesen → Zustand ändern → von vorn. Sie läuft, bis das Spiel vorbei ist:

energie = 3
while energie > 0:
    print(f"Energie: {energie}")
    befehl = input("Was tust du? (laufen/ausruhen) ")
    if befehl == "laufen":
        energie -= 1
    elif befehl == "ausruhen":
        energie += 1
        print("Du ruhst dich aus.")
    else:
        print("Diesen Befehl kenne ich nicht.")
print("Du bist erschöpft. Spiel vorbei!")

Eingaben aufräumen

Spieler tippen gern Osten, osten oder OSTEN. Mit zwei String-Methoden machst du daraus immer dasselbe:

eingabe = "  OsTen "
sauber = eingabe.strip().lower()
print(f"[{sauber}]")

Weiterbauen: Wenn deine Aufgabe läuft, mach das Spiel größer! Füge Räume hinzu, lege Gegenstände in Räume ("gegenstand": "Schlüssel") oder sperre die Schatzkammer, bis man den Schlüssel hat. Teile dein Spiel danach mit dem 🔗-Knopf.

Deine Aufgabe

Jetzt bist du dran

Programmiere ein kleines Textadventure. Die Spielwelt steht schon im Dictionary welt. Du startest im Flur. Gib in jeder Runde Du bist hier: Flur aus und frag mit input("Wohin? ") nach einer Richtung. Gibt es die Richtung, geh in den neuen Raum, sonst gib Da geht es nicht weiter. aus. Erreichst du die Schatzkammer, gib Du hast den Schatz gefunden! und danach die Anzahl der Züge aus, z. B. Züge: 2, und beende das Spiel.

welt = {
    "Flur": {"norden": "Küche", "osten": "Labor"},
    "Küche": {"süden": "Flur"},
    "Labor": {"westen": "Flur", "norden": "Schatzkammer"},
    "Schatzkammer": {},
}

raum = "Flur"
zuege = 0

# Deine Spielschleife

Ohne Hinweise gelöst gibt es einen ⭐ auf deiner Fortschrittsseite.

Lösung anzeigen

Versuch es erst selbst – aus Fehlern lernt man am meisten. Hier ist eine mögliche Lösung:

welt = {
    "Flur": {"norden": "Küche", "osten": "Labor"},
    "Küche": {"süden": "Flur"},
    "Labor": {"westen": "Flur", "norden": "Schatzkammer"},
    "Schatzkammer": {},
}

raum = "Flur"
zuege = 0

while raum != "Schatzkammer":
    print(f"Du bist hier: {raum}")
    richtung = input("Wohin? ").strip().lower()
    if richtung in welt[raum]:
        raum = welt[raum][richtung]
        zuege += 1
    else:
        print("Da geht es nicht weiter.")

print("Du hast den Schatz gefunden!")
print(f"Züge: {zuege}")