Zum Hauptinhalt springen

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.

Iterative Entwicklung

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.