| Nächste Überarbeitung | Vorherige Überarbeitung |
| textadventure:wohin_gehen [2026/04/05 22:53] – angelegt celandir | textadventure:wohin_gehen [2026/05/21 09:47] (aktuell) – celandir |
|---|
| ====== Wohin soll es gehen? (Fallunterscheidung) ====== | ====== Wohin soll es gehen? (Fallunterscheidung) ====== |
| |
| Du kannst nun einen Ort oder eine Situation beschreiben und die Spieler:innen können etwas eingeben. Im nächsten Schritt müssen die Eingaben ausgewertet werden, um zu entscheiden, wie das Abenteuer weiter geht. Wir fangen mit einem einfachen Beispiel an: | Du kannst nun einen Ort oder eine Situation beschreiben und die Spieler:innen können etwas eingeben. Im nächsten Schritt müssen die Eingaben ausgewertet werden, um zu entscheiden, wie das Abenteuer weiter geht. Wir fangen mit einem einfachen Beispiel an. Du kannst das folgende Python-Programm durch Klick auf die Überschrift des Kastens direkt herunterladen und mit Thonny öffnen. |
| |
| | <file python fallunterscheidung.py[enable_line_numbers="true"]> |
| | print("Waldlichtung") |
| | print("Du befindest dich auf einer kleinen Lichtung im Wald. Hohe Bäume umringen den Platz, ihr Blätterdach lässt nur vereinzelte Sonnenstrahlen hindurch. Der Boden ist weich, mit Moos bedeckt, und du meinst, in der Ferne das Plätschern von Wasser zu hören. Ein schmaler Pfad führt nach Norden und ein anderer nach Osten.") |
| | wahl = input("Wohin soll es gehen? (n=Norden, o=Osten) ") |
| | if wahl == "n": |
| | print("Flussufer") |
| | print("Der Pfad mündet an ein glitzerndes Flussufer. Das Wasser ist klar und fließt ruhig dahin, doch weiter auf der anderen Seite siehst du dichten Wald. Ein alter Holzsteg ragt ein Stück in den Fluss – instabil, aber vielleicht noch nutzbar. Zurück kannst du nach Süden gehen, zurück zur Waldlichtung.") |
| | elif wahl == "o": |
| | print("Verlassene Hütte") |
| | print("Ein schmaler Weg führt dich zu einer kleinen, verwitterten Hütte. Die Fenster sind blind vor Staub, die Tür steht einen Spalt offen. Drinnen scheint es dunkel, aber du meinst, einen schwachen Geruch von Rauch wahrzunehmen – vielleicht war hier kürzlich jemand. Du kannst zurück nach Westen, zur Waldlichtung, gehen.") |
| | else: |
| | print("Dunkler Wald") |
| | print("Du verlässt den schmalen Pfad und schlägst dich durchs Unterholz. Schon nach wenigen Schritten verdunkelt sich das Licht, und die Luft wird kälter. Der Wald wirkt hier älter, dichter – fast lebendig. Zwischen den knorrigen Wurzeln scheint Nebel aufzusteigen, der lautlos über den Boden kriecht. Von irgendwoher hörst du ein leises Knacken, doch als du dich umdrehst, ist nichts zu sehen. Die Stille dehnt sich aus, schwer und bedrückend – und plötzlich bist du dir nicht mehr sicher, ob du den Weg zurück noch findest.") |
| | print("Das Abenteuer geht weiter.") |
| | </file> |
| |
| | <div todo> |
| | Führe das Programm mit Thonny mehrmals aus und mache unterschiedliche Eingaben. Fasse zusammen, was Du beobachtest. |
| | </div> |
| | |
| | In dem Programm wird zunächst in den Zeilen 1 und 2 mit der Funktion ''print'' ein Ort (Waldlichtung) beschrieben. Mit der Funktion ''input'' wird in Zeile 3 gefragt, wohin die Spieler:in gehen möchte. Der Rückgabewert der Funktion (der eingegebene Text) wird dann der Variablen ''wahl'' zugewiesen. Das kennst du soweit schon. |
| | |
| | Ab Zeile 4 folgt nun eine **Fallunterscheidung**. Diese wird eingeleitet durch das Schlüsselwort ''if'' (=wenn), danach folgt eine **Bedingung** und dann ein Doppelpunkt. Wenn die Bedingung erfüllt ist, werden die folgenden, **eingerückten** Anweisungen ausgeführt, ansonsten werden sie übersprungen und das Programm wird in der ersten wieder ausgerückten Zeile (hier Zeile 7) fortgesetzt. |
| | |
| | Die **Bedingung** ist ein Ausdruck, der zu einem **Wahrheitswert** (wahr oder falsch bzw. true oder false) ausgewertet werden kann. Wahrheitswerte (Booleans) sind ein weiterer, wichtiger Datentyp in Python. In diesem Fall wird der Wert der Variablen ''wahl'' mit dem String ''"n"'' verglichen. Hat die Spieler:in also „n“ eingegeben, dann wird der Block mit den eingerückten Anweisungen ausgegeben und der Ort im Norden (Flussufer) beschrieben. Das Programm wird dann auch in Zeile 7 fortgesetzt. |
| | |
| | Beachte, dass für den **Vergleich** zwei Gleichheitszeichen (''=='') verwendet werden. Ein einzelnes Gleichheitszeichen ist eine Zuweisung (einer Variablen wird ein Wert zugewiesen), ein doppeltes Gleichheitszeichen ein Vergleich. Das ist ein Fehler, den man als Anfänger:in im Programmieren leider oft macht. |
| | |
| | In Zeile 7 steht nun ''elif'' (kurz für „else if“, d.h. „sonst, wenn“) als weiteres Schlüsselwort, wiederum gefolgt von einer Bedingung und einem Doppelpunkt. Es bdeutet, dass, wenn die ''if''-Bedingung in Zeile 4 //nicht// erfüllt wurde (also etwas anderes als „n“ eingegeben wurde), dann und nur dann geprüft wird, ob die ''elif''-Bedingung erfüllt wird. Wird diese Bedingung erfüllt, dann wird der folgende, eingerückte Block von Anweisungen ausgeführt, sonst übersprungen. Wenn die Spieler:in also kein „n“ eingegeben hat, dann wird geprüft, ob sie ein „o“ eingegeben hat. Falls ja, dann wird die verlassene Hütte beschrieben. |
| | |
| | Wurde weder „n“ noch „o“ eingegeben, dann wird das Programm in Zeile 10 mit dem Schlüsselwort ''else'' („sonst“) fortgesetzt. Der ''else''-Zweig (die eingerückten Anweisungen nach dem ''else'') wird immer dann ausgeführt, wenn weder die ''if''-Bedingung noch die ''elif''-Bedingung erfüllt wurden. |
| | |
| | In allen Fällen wird die Programmausführung mit der ersten wieder ausgerückten Anweisung, die auf die Fallunterscheidung folgt, fortgesetzt. Es wird also immer in Zeile 13 „Das Abenteuer geht weiter.“ in der Kommandozeile ausgegeben, was sachlich natürlich falsch ist, weil das Programm an dieser Stelle zuende ist. |
| | |
| | Bei einer Fallunterscheidung //muss// es immer einen ''if''-Zweig geben, es //kann// einen oder mehrere ''elif''-Zweige geben, die dann der Reihe nach abgeprüft werden. Am Ende //kann// es noch einen ''else''-Zweig geben, der immer dann ausgeführt wird, wenn //keine// der vorstehenden Bedingungen erfüllt wurde. Bei einer Fallunterscheidung wird nie mehr als ein Zweig ausgeführt. |
| | |
| | Beachte, dass bei Python die **Einrückungen** sehr wichtig sind, denn sie kennzeichnen, welche Anweisungen zu einem Zweig (oder Block) gehören. Es ist wichtig, dass Du immer gleichmäßig einrückst, üblicherweise um **4 Leerzeichen**. Wenn Du ungleichmäßig oder gar nicht einrückst, dann funktioniert das Programm nicht korrekt. Falsche Einrückungen sind ein weiterer verbreiteter Fehler bei Anfänger:innen. |
| | |
| | <div todo> |
| | Erweitere nun dein Textadventure so, dass du mehrere Orte hast, zwischen denen man wechseln kann. |
| | </div> |
| | |
| | Link zum Python-Handbuch: [[https://openbook.rheinwerk-verlag.de/python/05_001.html#u5.1]] |
| | |
| | Nächste Lektion: [[wiederhole_dich|Wiederhole dich!]] |
| |
| |