Zum Spiel · 12.09.2026
Zum Spiel: Text und Befehle
So zerlegt die Falkenmoor-Engine „greif rauber an“ in Verb und Ziel — strip, lower, split und der Mini-Parser für deine eigenen Befehle.
Ein Text-MUD ist im Kern ein Programm, das Sätze liest und Decisions trifft: „greif rauber an“ → Verb greif, Ziel rauber. Hier lernst du die Text-Werkzeuge, mit denen die Falkenmoor-Engine (genauer: teiles_ok() und der Befehlsverteiler) genau das macht.
Eingaben sind roh
Was Spieler tippen, ist unordentlich: Leerzeichen am Rand, Großschreibung, ein Zeilenumbruch vom Enter. Drei Aufrufe putzen das:
roh = input("Befehl: ") # z. B. " GREIF Raider an\n"
befehl = roh.strip().lower()
print(befehl) # "greif raider an"strip()schneidet Leerzeichen und Umbrüche an beiden Enden ab.lower()macht alles klein — „GREIF“ und „greif“ sind dann derselbe Befehl.- Beide ändern den Text nicht, sie liefern einen neuen zurück.
split: den Satz in Wörter zerlegen
teile = "greif rauber an".split()
print(teile) # ['greif', 'rauber', 'an']
verb = teile[0]
ziel = teile[1] if len(teile) > 1 else None
print(verb, "→", ziel)Ohne Argument teilt split() an jedem Leerzeichen. Mit einem Trenner und maxsplit kontrollierst du, wie oft geteilt wird — wichtig für Ziele aus mehreren Wörtern:
teile = "nimm roter trank".split(" ", 1)
print(teile) # ['nimm', 'roter trank']startswith: Befehle erkennen
befehl = "sag hallo zusammen"
if befehl.startswith("sag"):
print("Chat:", befehl[3:].strip())Der Mini-Parser
Jetzt alles zusammen — ein Befehlsverteiler im Miniaturformat:
roh = input("Befehl: ")
teile = roh.strip().lower().split()
if not teile:
print("…?")
elif teile[0] == "greif" and len(teile) >= 2:
print("Du greifst", teile[1], "an.")
elif teile[0] == "nimm":
ziel = " ".join(teile[1:])
print("Du nimmst:", ziel)
else:
print("Was meinst du mit", roh, "?")Falkenmoors teiles_ok() prüft genau diese Schritte — zerlegt, Länge kontrolliert, Verb erkennen — nur mit mehr Befehlen und einer Kette von elif im Befehlsverteiler.
So übst du das
- Befehlserkenner ausbauen: schau, nimm, inventar — jede Erweiterung ist eine elif-Zeile.
- Wortzähler: einen Satz in Wörter zerlegen und mit dem Zähler-Muster aus dem Dictionaries-Artikel zählen.
- Echo mit Stil: Eingaben bereinigen und als Dialogzeile formatieren.
- Schlechte Eingaben sammeln: leere Eingabe, nur Leerzeichen, nur Großbuchstaben — was liefert der Parser?
Übungen
Übung 1 — Die unordentliche Eingabe
Bereinige ' GREIF Raider AN ' (Groß-/Kleinschreibung, Leerzeichen) und gib Ziel und Verb aus.
Musterlösung zeigen
roh = " GREIF Raider AN "
teile = roh.strip().lower().split()
print("Verb:", teile[0])
print("Ziel:", teile[1])Übung 2 — Ziel aus mehreren Wörtern
Zerlege 'nimm roter trank' so, dass Verb und komplettes Ziel getrennt herauskommen — mit split(" ", 1).
Musterlösung zeigen
roh = "nimm roter trank"
verb, ziel = roh.split(" ", 1)
print("Verb:", verb)
print("Ziel:", ziel)Übung 3 — Chat-Erkennung
Gib den Text nach „sag“ aus, wenn der Befehl mit sag beginnt — sonst eine Fehlermeldung.
Musterlösung zeigen
befehl = "sag hallo zusammen"
if befehl.startswith("sag"):
print("Chat:", befehl[3:].strip())
else:
print("Kein Chat-Befehl.")Übung 4 — Der Richtungs-Wälzer
Übersetze Kurzbefehle mit einem Dictionary: n → norden, s → sueden, o → osten, w → westen.
Musterlösung zeigen
wege = {"n": "norden", "s": "sueden", "o": "osten", "w": "westen"}
eingabe = "o"
print("Du gehst:", wege.get(eingabe, "ins Ungewisse"))Quiz — Teste dich
Erst überlegen, dann aufklappen — so trainiert es am meisten!
- Was ergibt
" a b ".strip()? - Wie viele Elemente hat
"greif rauber an".split()? - Was ergibt
"NORDEN".lower()? - Was ist
"nimm roter trank".split(" ", 1)[1]? - Ist
"sag hallo".startswith("sag")wahr?
Quiz-Lösungen anzeigen
"a b"— nur die Ränder werden abgeschnitten, das innere Leerzeichen bleibt.- Drei — an jedem Leerzeichen wird geteilt.
"norden"."roter trank"— es wird nur einmal geteilt, der Rest steht im zweiten Element.- Ja — der Text beginnt mit „sag“.
Mehr aus der Kategorie „Zum Spiel“
- Zum Spiel: Fehler lesen 12.09.2026
- Zum Spiel: Mehrere Dateien 12.09.2026
- Zum Spiel: JSON — die Welt als Daten 12.09.2026
- Drei Räume — dein erstes Textabenteuer 12.09.2026