Gestaltungsorientierte Informatik

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
textadventure:wohin_gehen [2026/04/12 18:04] – celandirtextadventure:wohin_gehen [2026/05/21 09:47] (aktuell) – celandir
Zeile 1: Zeile 1:
 ====== 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 das folgende Python-Programm durch Klick auf die Überschrift des Kastens direkt herunterladen und mit Thonny öffnen. Führe es aus und sieh was passiert.+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"]> <file python fallunterscheidung.py[enable_line_numbers="true"]>
Zeile 16: Zeile 16:
     print("Dunkler Wald")     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("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> </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.  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. 
Zeile 22: Zeile 27:
 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. 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 +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!]] 
 + 
textadventure/wohin_gehen.1776009888.txt.gz · Zuletzt geändert: von celandir