Was passiert am Fluss?
Wenn der Spieler bei dieser ersten Entscheidung aus dem vorherigen Kapitel nach links geht, so trifft er auf einen Fluss. Aber was passiert denn nun an diesem Fluss? Das entscheiden wir in diesem Kapitel.
Doch bevor wir zu sehr in die Story unseres Abenteurers eintauchen, sollten wir uns ein paar Gedanken zu unserem Code machen: Der wird jetzt nämlich langsam länger, und damit leider auch irgendwann unübersichtlich. Um das zu verhindern, definieren wir folgende Regel: für jede Szene gibt es eine eigene Funktion, die wir möglichst der Szene entsprechend benennen. Da wir in diesem Kapitel die Szene am Fluss beschreiben wollen, erstellen wir also eine neue Funktion fluss()
(ab Zeile 1
).
Innerhalb dieser neuen fluss()
-Funktion machen wir nun wieder genau das gleiche wie in der Anfangsszene: Wir erzählen dem Spieler ein Stück der Geschichte (den Satz von wegen Du stösst auf einen Fluss...
haben wir einfach in die neue Funktion verschoben), stellen ihn vor eine nächste Entscheidung, und setzen den Spielverlauf entsprechend fort (Zeilen 2-10
).
FĂĽr die Entscheidung schwimmen
definieren wir auf Zeile 5
ein erstes reguläres Spielende. Der Spieler wurde von einem Krokodil gefressen — das Spiel ist vorbei. Hier folgt also keine nächste Szene.
Auf Zeile 10
behandeln wir wiederum den Fall, dass der Spieler eine Entscheidung eingetippt hat, die es gar nicht gibt. Das haben wir auch bereits bei der Anfangsszene gemacht, auf Zeile 24
.
Die einzige Entscheidung, die den Spieler vorwärtsbringt, ist brücke
— hier lassen wir ihn tatsächlich eine versteckte Brücke finden. Mit dem Satz auf Zeile 7
beginnt also eine nächste Szene. Gemäss unserer "Pro Szene eine Funktion"-Regel müsste dieser Satz also auch bereits wieder in eine eigene neue Funktion verschoben werden. Das erledigen wir aber in einem nächsten Schritt.
In der Softwareentwicklung gibt es ein wichtiges Arbeitsprinzip: First do it, then do it right.
Das Programmieren braucht viel mentale Kapazität. Erfahrene Programmiererinnen und Programmierer gehen deshalb am liebsten Schrittweise vor. Wir schreiben unseren Code zuerst einfach mal so, dass er läuft. In einem zweiten Schritt kümmern wir uns dann um die "Code-Qualität" — also um solche Dinge wie die "Pro Szene eine Funktion"-Regel.
Deshalb lassen wir den Satz auf Zeile 7
vorerst einfach mal dort stehen, auch wenn der später dann noch in seine eigene Funktion verschoben werden muss.
def fluss():
print("Du stösst auf einen Fluss. Du kannst schwimmen oder eine Brücke suchen.")
auswahl = input("Was möchtest du tun? (schwimmen/brücke): ")
if auswahl == "schwimmen":
print("Du wurdest von einem Krokodil angegriffen! Spiel vorbei!")
elif auswahl == "brĂĽcke":
print("Du hast eine versteckte BrĂĽcke gefunden und den Fluss sicher ĂĽberquert.")
print("Du siehst eine Höhle vor dir.")
else:
print("UngĂĽltige Wahl! Spiel vorbei!")
print("Willkommen beim Schatzsuche-Spiel!")
print("Du befindest dich in einem Wald. Du musst den versteckten Schatz finden.")
print("Du stehst an einer Wegkreuzung. Du kannst nach links, rechts oder geradeaus gehen.")
auswahl = input("In welche Richtung möchtest du gehen? (links/rechts/geradeaus): ")
if auswahl == "links":
fluss()
elif auswahl == "rechts":
print("Du begegnest einem Rudel Wölfe. Du kannst entweder rennen oder versuchen, sie zu zähmen.")
elif auswahl == "geradeaus":
print("Du gehst geradeaus und triffst auf eine Riesenspinne.")
else:
print("UngĂĽltige Wahl! Spiel vorbei!")
Damit haben Sie bereits das ganze Kernprinzip kennengelernt, nach welchen wir unser Text Adventure entwickeln. In den nächsten Schritten machen wir noch ein paar kleine Anpassungen und bauen die restlichen Szenen weiter aus.