Ein wichtiger Bestandteil von Textadventures sind Dialoge. Um Spannung aufzubauen, verwendet man kleine Pausen und kann auch Rätsel realisieren. Im folgenden finalen Code, kann man in der Funktion dialog_ einen Dialog programmieren. Hier soll in der Höhle noch eine Rechenaufgabe gestellt werden. Wir haben den _ Unterstrich hinzugefügt, damit der Spieler nicht einfach dialog eingeben kann.
Ein einfacher Dialog, der eine Rechenaufgabe stellt und solange fragt, bis man das Ergebnis richtig eingegeben hat, kann man hier sehen:
Datei:script.js
Teste das Ergebnis (n, nimm schlüssel,s, w, gib schlüssel, w):
Versucht mal die Funktion mittels Math.random(), das euch eine Zufallszahlkommazahl zwischen 0 und 1 zurückgibt und der Math.floor, einer Funktion die Auf eine Ganzzahl abrundet so zu verändern, dass ihr zufällige Rechenausgaben bekommt.
Wir sehen hier ein neues Schlüsselwort mit der Bezeichnung async, das anzeigt, dass diese Funktion nicht gleich durchläuft sondern dass man mit await input("Was ist 7 mal 6?") auf Eingaben oder mit await sleep(1000) auf den Ablauf einer Zeitspanne (hier 1 Sekunde) wartet.
Auch sehen wir eine neue Schleife while(true). Hierbei handelt es sich um eine Endlosschleife, die man mit break beenden kann.
Um die Dialog Funktion aufzurufen, fügen wir am Schluss der Funktion ``betrachte`` folgenden Aufruf hinzu: dialog_().then(()=>{}).Das sieht etwas seltsam auf, ist aber notwendig weil die betrachte Funktion nicht mit async gekennzeichnet wurde. Dies bedeutet, dass man in dieser Funktion kein await verwenden darf. Wenn hier also etwas nach Aufruf der dialog_() Funktion passieren soll muss es in die geschweifte Klammer geschrieben werden:
Wir brauchen das nicht, weshalb wir es bei dialog_().then(()=>{}) belassen.
Ergebnis:
Alle Dateien gezippt: jsadventure.zip
Zurück zum vorherigen Kapitel Weiter zum nächsten Kapitel