Kapitel 2 Eine virtuelle Welt2.1 Es geht endlich losNun wollen wir unser erstes Adventure schreiben. Kreativ, wie wir sind, nennen wir es test.adv und öffnen es im Editor. Im Editor schreiben wir: Raum Vor_dem_Haus Name 'Vor dem Haus' Besch 'Du befindest Dich vor einem kleinen, weißen Haus, das im Osten liegt. Vor dem Haus wachsen wilde Blumen und ein kleiner Trampelpfad führt nach Norden in einen Wald.' Ende Abspeichern und mit tag test generieren. Es sollte keine Fehler geben, ansonsten noch einmal die Syntax überprüfen. Damit haben wir das minimal mögliche Adventure mit nur einem Raum erstellt. T.A.G. verlangt nämlich, dass mindestens ein Raum da ist, damit der Spieler nicht im Nirgendwo ist. Das Wort Ende beendet den Quelltext, alles was danach geschrieben wird, wird nicht mehr untersucht. Der Name des einzigen Raumes innerhalb von T.A.G. ist Vor_dem_Haus. Jeder Raum muss solch einen Namen besitzen, mit dem man sich im weiteren Quelltext auf ihn beziehen kann. Solche Namen, oder oft auch IDs genannt, können bis zu 36 Zeichen lang sein und dürfen nur Buchstaben, Ziffern und den Unterstrich enthalten, der oft dazu verwendet wird, Leerzeichen darzustellen. Das erste Zeichen in der ID darf keine Ziffer sein. Groß- und Kleinschreibung ist bei IDs allerdings egal, genauso sind die Umlaute und ihre Umschreibung mit »ae«, »oe« und »ue« sowie »ss« und »ß« identisch. Das heißt, dass suedstrasse, Südstraße und SÜDSTRASSE denselben Ort meinen, aber verschieden von Süd_Straße sind. Wie diese ID verwendet wird, wird gleich gezeigt. Dieses Adventure ist allerdings noch sehr langweilig. Ein Aufruf von tam test bringt dies an den Tag:
Da wir nur einen Raum definiert haben, kennt T.A.M. auch außer den von vorneherein in T.A.G. definierten Verben wie »gehe«, »schaue« usw. nichts, noch nicht einmal die Richtungen. 2.2 Eine kleine »Welt«Also erweitern wir unsere Definition: #DAT 'normal.adv' Raum Vor_dem_Haus Name 'Vor dem Haus' O Im_Haus N Lichtung Besch 'Du befindest Dich vor einem kleinen, weißen Haus, das im Osten liegt. Vor dem Haus wachsen wilde Blumen und ein kleiner Trampelpfad führt nach Norden in einen Wald.' Raum Im_Haus W Vor_dem_Haus Name 'In dem kleinen Haus' Besch 'Das kleine Haus ist irgendwie leer: Es gibt keine Möbel und die Wände sind kahl. Im Westen geht es wieder hinaus.' Raum Lichtung S Vor_dem_Haus Name 'Auf einer Lichtung' Besch 'Dies ist eine kleine Lichtung in einem Laubwald, der hauptsächlich aus Eichen und einigen Birken besteht. Dichtes Unterholz macht den Wald undurchdringbar, nur ein Trampelpfad führt nach Süden.' Ende Mit dieser Definition kann man nun in drei Räumen herumlaufen. Die Anweisung #DAT 'normal.adv' liest die Datei normal.adv ein, als ob sie Bestandteil der Hauptdatei test.adv wäre. Mit diesem Befehl kann man sein Adventure unterteilen. Denkbar wäre z.B. eine Datei für die Befehle, eine für die Objekte oder eine Datei für jeden Abschnitt im Adventure. Die Datei normal.adv ist im Paket enthalten und definiert einige zusätzliche Befehle sowie zwölf Grundrichtungen, nämlich die acht Himmelsrichtungen, hoch, runter, herein und heraus. Die dort festgelegten Richtungen kann man jetzt in der Raum-Definition angeben. Die Zeile O Im_Haus bedeutet »Von hier aus geht es nach Osten zu dem Ort mit der ID Im_Haus«. Mit diesen Definitionen erhalten wir eine »Landschaft«, die ungefähr so aussieht: Lichtung | | Vor dem --- Im Haus Haus Die Reihenfolge der Angaben zu jedem Raum ist übrigens egal. Alles, was nach der Zeile, die mit Raum beginnt, definiert wird, gehört zum selben Raum, egal, ob es Leerzeilen dazwischen gibt oder nicht. Man nennt das einen Definitionsblock. Dieser Block hört automatisch dann auf, wenn ein anderer beginnt, was in unserem Fall die nächste Raum-Definition ist. Aufgabe 1 2.3 Einige VerfeinerungenWer mit tag test und tam test unser neues Opus schon ausprobiert hat, dem ist beim Umherwandern in unserer virtuellen Welt bestimmt einiges aufgefallen:
Genau diese eintönige Aussage wollen wir ändern, denn sie erinnert doch sehr stark an die schlechte alte Zeit, als die Antwort auf fast alles »Das geht leider nicht« war. Dazu definieren wir eine so genannte Antwort: Antwort Unterholz Besch 'In dieser Richtung ist das Unterholz zu dicht. Der eizige Weg ist ein Trampelpfad nach Süden.' Diese Antwort ist wieder ein Definitionsblock für sich, darf also nicht innnerhalb einem der anderen Blöcke stehen. Die einzige Angabe ist die Beschreibung. Nun ändern wir die Definition der Lichtung ab auf: Raum Lichtung N Unterholz NO Unterholz O Unterholz SO Unterholz SW Unterholz W Unterholz NW Unterholz S Vor_dem_Haus Name 'Auf einer Lichtung' Besch 'Dies ist eine kleine Lichtung in einem Laubwald, der hauptsächlich aus Eichen und einigen Birken besteht. Dichtes Unterholz macht den Wald undurchdringbar, nur ein Trampelpfad führt nach Süden.' Dann erscheint jedesmal, wenn man von der Lichtung aus in eine der Himmelsrichtungen außer Süden gehen will, der Satz, dass dort das Unterholz zu dicht ist und dass der Ausgang im Süden ist. Nun weiß der Spieler, warum er nicht in die gewünschte Richtung gehen kann und was er für Alternativen hat, und das ist doch besser als der Standard-Satz, oder? Was noch stört, sind die vielen Unterholz-Angaben. Da es oft mehr »Das geht nicht«-Richtungen als Ausgänge gibt, kann man diese Definition abkürzen auf: Raum Lichtung Std Unterholz S Vor_dem_Haus Name 'Auf einer Lichtung' Besch 'Dies ist eine kleine Lichtung in einem Laubwald, der hauptsächlich aus Eichen und einigen Birken besteht. Dichtes Unterholz macht den Wald undurchdringbar, nur ein Trampelpfad führt nach Süden.' Std heißt Standard und belegt alle Standard-Richtungen mit der Antwort Unterholz. In normal.adv wurden nur die Himmelsrichtungen als Standard-Richtung definiert (mit dem Sternchen), und das macht auch Sinn, denn wenn der Spieler auf der Lichtung nach oben gehen will, ist der Grund, warum das nicht klappt, wohl nicht das dichte Gestrüpp. Die Std-Definition muss vor den anderen Richtungsdefinitionen stehen, da zunächst alle Himmelsrichtungen vorbelegt werden, und dann der Ausgang im Süden mit Vor_dem_Haus überschrieben wird. In der Std-Definition können auch andere Räume angegeben werden, obwohl dies meist keinen Sinn macht, denn wo kommt man denn immer in denselben Raum, egal, ob man nach Süden, Norden oder Osten geht? Etwas surreal, aber technisch möglich. Aufgabe 2 2.4 Im Dunkeln . . .Wir haben die Haupt-Eigenschaften eines Raums kennengelernt:
Eine wichtige Sache fehlt noch: Räume können Attribute besitzen. Ein Attribut für Räume ist z.B. besucht. Dieses Attribut bezeichnet, ob ein Raum dem Spieler bereits bekannt ist oder nicht und wird unter anderem für die langen und kurzen Raumbeschreibungen herangezogen. Dieses Attribut wird allerdings automatisch von T.A.M. gesetzt, wenn ein Raum betreten wird. Das zweite wichtige Attribut ist dunkel. Besitzt ein Raum dieses Attribut, so kann der Spieler in diesem Raum nichts sehen, es sei denn, er hat eine Lampe oder Ähnliches bei sich. Von einem dunklen Raum aus kann der Spieler nur in einen hellen, bekannten Raum gehen. So kommt er zumindest immer wieder zurück, wenn er will. Als Beispiel definieren wir einen Keller für das Haus: Raum Im_Haus W Vor_dem_Haus R Keller Name 'In dem kleinen Haus' Besch 'Das kleine Haus ist irgendwie leer: Es gibt keine Möbel und die Wände sind kahl. Im Westen geht es wieder hinaus. Durch eine offenen Falltür im Boden siehst du eine Treppe, die nach unten in die Dunkelheit führt.' Raum Keller Name 'Keller' H im_Haus Besch 'Dieser Keller riecht modrig, die feuchten Wände sind mit Moos bewachsen. Das, was von den verfaulten Regalen übriggeblieben ist, ist leer. Eine intakte Holztreppe führt zurück nach oben.' Attr dunkel (Die Leerzeile in der Raumbeschreibung bewirkt einen Absatz bei der Ausgabe.) Der Keller ist dunkel, das bewirkt die Zeile Attr dunkel. Wenn wir das neue Adventure erstellen und spielen wie gehabt, so erhalten wir, wenn wir vom Haus aus nach unten gehen (r = »runter«, h = »hoch«), die Nachricht »Es ist zu dunkel hier, um etwas sehen zu können«, anstelle der Raumbeschreibung, und in der Statuszeile steht »Im Dunkeln . . .«. Wir befinden uns zwar im Keller, aber wir können nichts machen, außer wieder zurück nach oben zu gehen. Wenn wir versuchen, in eine andere Richtung zu gehen, stolpern wir nur umher. Aber das ändert sich im nächsten Kapitel, in dem wir anfangen, Objekte zu definieren. Zusammenfassung: Die Räume können in abgeschlossenen Blöcken definiert werden. Sie bekommen dort einen Namen und eine Beschreibung. Um die Räume miteinander zu verbinden, muss man Richtungen definieren. Zu jedem Raum kann ein Ausgang in jede Richtung angegeben werden. Dieser Ausgang kann ein anderer Raum oder eine Antwort sein. Räume können Attribute besitzen. Verweis:
|
Einleitung |