Lektion 9 von 35Python
Python · Lektion 9 · 45 Minuten
Projekt: Textadventure
Das lernst du
- Eine Spielschleife mit
whilebauen - 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- Denkanstoß
Gib am Anfang jeder Runde „Du bist hier: …“ aus und geh mit raum
=welt[raum][richtung]weiter. - Welcher Befehl hilft?
Prüfe mit
ifrichtung inwelt[raum], ob es die Richtung gibt. Falsche Richtungen zählen nicht als Zug.Mach die Eingabe mit
.strip().lower()sauber, bevor du sie prüfst. - Lückencode – ergänze die ___
welt = { "Flur": {"norden": "Küche", "osten": "Labor"}, "Küche": {"süden": "Flur"}, "Labor": {"westen": "Flur", "norden": "Schatzkammer"}, "Schatzkammer": {}, } raum = "Flur" zuege = 0 while ___: print(___) richtung = ___ if ___: raum = ___ zuege += ___ else: print(___) print(___) print(___)
Ohne Hinweise gelöst gibt es einen ⭐ auf deiner Fortschrittsseite.
Lösung anzeigen🔒 Erst nach allen Hinweisen oder 2 Prüf-Versuchen
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}")