Zum Spiel · 12.09.2026
Drei Räume — dein erstes Textabenteuer
Der Abschluss der Reihe: Du baust in einer Datei ein eigenes Drei-Räume-Abenteuer — ohne Flask, ohne Datenbank. Und weißt danach, warum Falkencode der nächste Schritt ist.
Jetzt kommt zusammen, was die ganze Reihe aufgebaut hat: Dictionaries für die Räume, eine Liste fürs Inventar, eine Schleife als Spielschleife, Konditionen für Türen, input für die Eingabe. Am Ende steht ein lauffähiges Textabenteuer in einer einzigen Datei — dein eigenes Mini-Falkenmoor.
Der Bauplan
- Räume als Dictionary: Name → Beschreibung + Ausgänge.
- Zustand:
raum(wo bin ich),inventar(Liste),siegreich(wahr/ unwahr). - Spielschleife: Raum zeigen, Befehl lesen, reagieren — bis „ende“ oder Sieg.
- Eine verschlossene Tür: Ohne Schlüssel im Inventar bleibt die Kammer zu.
Schritt 1 — die Welt als Daten
raeume = {
"hof": {"text": "Ein Hof. Norden: eine Tür. Osten: der Keller.",
"exits": {"norden": "kammer", "osten": "keller"}},
"keller": {"text": "Dunkler Keller. Ein Schlüssel liegt da.",
"exits": {"westen": "hof"}},
"kammer": {"text": "Eine Kammer. In der Mitte: eine Truhe.",
"exits": {"sueden": "hof"}},
}Das ist exakt das Muster aus dem JSON-Artikel: Räume unter ihren Namen, Ausgänge als Richtung → Zielraum. Falkenmoors world.json hat 228 solcher Einträge — dein Abenteuer beginnt mit drei.
Schritt 2 — Zustand und Spielschleife
raum = "hof"
inventar = []
siegreich = False
while True:
print("\n== " + raum + " ==")
print(raeume[raum]["text"])
befehl = input("> ").strip().lower()
# … Befehle folgenSchritt 3 — die Befehle
if befehl == "ende":
break
elif befehl in ("n", "s", "o", "w"):
richtung = {"n": "norden", "s": "sueden",
"o": "osten", "w": "westen"}[befehl]
ziel = raeume[raum]["exits"].get(richtung)
if ziel is None:
print("Da ist kein Weg.")
elif raum == "hof" and ziel == "kammer" and "Schlüssel" not in inventar:
print("Die Tür ist verschlossen — du brauchst einen Schlüssel.")
else:
raum = ziel
elif befehl == "nimm schluessel" and raum == "keller":
inventar.append("Schlüssel")
print("Schlüssel genommen.")
elif befehl == "oeffne truhe" and raum == "kammer":
print("Die Truhe kracht auf: 100 Gold! Du hast gewonnen!")
break
elif befehl == "schau":
print("Inventar:", inventar or "leer")
else:
print("Möglich: n/s/o/w · schau · nimm schluessel · oeffne truhe · ende")Das komplette Programm zum Testen
Hier das Ganze zusammen — direkt hier im Editor lauffähig (input() öffnet ein Fenster; endet die Welt in einer Endlosschleife, lädst du die Seite neu. Lokal läuft es mit python3 abenteuer.py):
Übungen
Übung 1 — Der vierte Raum
Baue einen Raum garten westlich vom Hof (mit eigener Beschreibung) und ergänze die Ausgänge beidseitig.
Musterlösung zeigen
# im raeume-Dict:
# "garten": {"text": "Ein Garten voller Kräuter.",
# "exits": {"osten": "hof"}},
# im Hof-Dict die Ausgänge:
# "exits": {"norden": "kammer", "osten": "keller", "westen": "garten"}Übung 2 — Der Inventar-Befehl
Ergänze den Befehl inventar, der die Liste ausgibt — oder „leer“, wenn nichts drin ist.
Musterlösung zeigen
elif befehl == "inventar":
print("Inventar:", inventar or "leer")Übung 3 — Erst gewinnen, dann feiern
Sorge dafür, dass oeffne truhe beim zweiten Mal nur noch „Sie ist offen.“ sagt statt erneut Gold zu zählen. (Tipp: die Variable siegreich existiert schon.)
Musterlösung zeigen
elif befehl == "oeffne truhe" and raum == "kammer":
if siegreich:
print("Sie ist offen. Gold ist Gold.")
else:
siegreich = True
print("100 Gold! Du hast gewonnen!")Übung 4 — Höflichkeit zahlt sich aus
Gib bei unbekannten Befehlen zusätzlich den aktuellen Raum aus, damit der Spieler weiß, wo er steht.
Musterlösung zeigen
else:
print("Möglich: n/s/o/w · schau · nimm schluessel · oeffne truhe · ende")
print("(Du bist in:", raum + ")")Was Falkenmoor extra macht
Dein Abenteuer ist ein Ein-Personen-Spiel: eine Schleife, ein Held, eine Welt im Speicher. Falkenmoor muss zusätzlich vieles: viele Spieler gleichzeitig bedienen (WebSocket), jeden Spielstand dauerhaft speichern (SQLite), Kämpfe, Quests, Gilden und zwei Sprachen berechnen und verwalten — und eine Welt aus world.json lesen, statt sie ins Programm zu tippen.
Genau diese Schicht heißt Falkencode. Und nun die wichtigste Faustregel der Reihe: Fang bei engine.py an, nicht bei app.py — die Spiellogik erklärt die Welt, der Webserver ist nur die Tür davor. Die Serie dazu wartet in der Kategorie Falkencode.
Mehr aus der Kategorie „Zum Spiel“
- Zum Spiel: Fehler lesen 12.09.2026
- Zum Spiel: Text und Befehle 12.09.2026
- Zum Spiel: Mehrere Dateien 12.09.2026
- Zum Spiel: JSON — die Welt als Daten 12.09.2026