Skript: Schwert und Schlüssel
Angenommen, du möchtest in deinem Textabenteuer speichern, ob der Spieler oder die Spielerin einen Schlüssel oder ein Schwert dabei hat. Später könnte der Fortgang der Geschichte davon abhängig sein, weil:
- Nur wenn du das Schwert dabei hast, kannst du das Monster besiegen.
- Nur wenn du den Schlüssel dabei hast, kannst du die Tür öffnen.
Dafür gibt es sogenannte Variablen und Bedingte Ausführungen. Wie das funktioniert, zeigt diese Lektion. Das ist die schwierigste Lektion des gesamten Kurses, und es wird wohl auch keine schwerere geben. Es müssen nämlich mehrere Teile ineinandergreifen, damit es klappt. Wenn du also nicht auf Anhieb alles verstehst und selber hinbekommst, ist das kein Problem.
- Variablen sind veränderliche Werte, die der Computer speichern kann. Darin kannst du zum Beispiel vermerken, ob Schwert oder Schlüssel eingesteckt wurden oder wie viele Stücken Pizza du gegessen hast!
- Bedingte Ausführungen
sind Codeabschnitte, die nur dann ausgeführt werden, wenn eine
bestimmte Bedingung erfüllt ist (Schwert dabei, Weniger als 5 Stück
Pizza gegessen, Schon mal im Ersatzteillager gewesen...)
Die folgenden Beispiele zeigt eine Anwendung von Variablen.
In Skript 4.1 legen wir in den ersten beiden Zeilen zwei Variablen an:
- VAR zeigt an: "Achtung, in dieser Zeile wird eine Variable angelegt!"
- schluessel_dabei = false sagt: "Die Variable heißt schluessel_dabei und bekomm den Wert false."
- false ist englisch und bedeutet "falsch" oder "unwahr". Das heißt also: Zu Beginn des Textabenteuers hast du keinen Schlüssel dabei.
Wenn du dich dafür entscheidest, den Schlüssel zu nehmen, dann wird der Wert von schluessel_dabei geändert:
~ schluessel_dabei = true
- Das Zeichen ~ nennt sich Tilde und zeigt an: "Achtung, hier beginnt eine Zeile, wo der Wert einer Variablen abgefragt oder geändert wird!"
schluessel_dabei = true ändert den Wert von schluessel_dabei auf true. Das ist englisch und bedeutet "wahr" oder "richtig". Du hast nun einen Schlüssel einstecken!
Skript 4.1
VAR schwert_dabei = false
-> start
=== start ===
Du bist in einem Raum, auf einem Tisch liegen mehrere Gegenstände. Welchen Gegenstand steckst Du ein?
* [Schlüssel]
Du steckst den Schlüssel ein.
~ schluessel_dabei = true
-> monster
* [Schwert]
Du steckst das Schwert ein.
~ schwert_dabei = true
-> monster
+ [Nichts]
Du steckst nichts ein.
-> monster
=== monster ===
Hier werden wir das Programm im nächsten Schritt erweitern.
Ein Monster wird erscheinen, das nur besiegt werden kann, wenn Du das Schwert dabei hast.
-> END
Im Moment macht es noch keinen Unterschied, ob du den Schlüssel oder das Schwert eingesteckt hast. Das ändert sich im folgenden Beispiel. Eine Erklärung findest du weiter unten.
Skript 4.2
VAR schwert_dabei = false
-> start
=== start ===
Du bist in einem Raum, auf einem Tisch liegen mehrere Gegenstände. Welchen Gegenstand steckst Du ein?
* [Schlüssel]
Du steckst den Schlüssel ein.
~ schluessel_dabei = true
-> monster
* [Schwert]
Du steckst das Schwert ein.
~ schwert_dabei = true
-> monster
+ [Nichts]
Du steckst nichts ein.
-> monster
=== monster ===
Es erscheint ein Monster.
{
- schwert_dabei:
Du kämpfst mit dem Schwert gegen das Monster und besiegst es!
- else:
Du bist leider unbewaffnet, das Monster besiegt Dich!
}
-> END
Neu
ist der Abschnitt === monster ===. Was hier im Bereich zwischen den
geschweiften Klammern { und } passiert, hängt davon ab, ob du das
Schwert eingesteckt hast oder nicht. Solche bedingten Ausführungen (= Code, der nur ausgeführt werden soll, wenn eine Bedingung wahr ist) sind immer wie folgt aufgebaut:
- [BEDINGUNG]:
[CODE, DER AUSGEFÜHRT WIRD, WENN BEDINGUNG ERFÜLLT]
- else:
[CODE, DER AUSGEFÜHRT WIRD, WENN BEDINGUNG NICHT ERFÜLLT]
else ist englisch und bedeutet "sonst".
Im Ergebnis wird also der Abschnitt du kämpfst mit dem Schwert gegen das Monster und besiegst es! nur ausgegeben, wenn du das Schwert dabei hast. Sonst bekommst du zu lesen: Du bist leider unbewaffnet, das Monster besiegt Dich!