[ T. A. G. ] [ Tutorium ]

 

Kapitel 2

Eine virtuelle Welt

 

2.1    Es geht endlich los

Nun 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:

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.

> I
Du hast nichts bei dir.

> N
Ich kenne »N« nicht.

> U HAUS
Ich kenne »Haus« nicht.

> GEHE NACH OSTEN
Ich kenne »Osten« nicht.

> SCHAU DICH UM
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
Spiel wirklich beenden? [J/N] JA

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
Erweitere die Raum-Definitionen so, dass man vor dem Haus mit »rein« ins Haus gelangt und von dort mit »raus« wieder hinaus.

 

2.3    Einige Verfeinerungen

Wer mit tag test und tam test unser neues Opus schon ausprobiert hat, dem ist beim Umherwandern in unserer virtuellen Welt bestimmt einiges aufgefallen:

Beim ersten Betreten des Raums wird der lange Text (Besch) angegeben, danach nur noch der kurze (Name). Dieser Modus heißt »knapp«. Mit »ausführlich« kann man sich bei jedem Betreten eines Raums die ganze Beschreibung anzeigen lassen. In jedem Fall bringt »schau dich um« oder »l« die komplette Beschreibung.

Der Text erscheint nicht so, wie er eingegeben wurde, die Umbrüche sind woanders: T.A.M. behandelt die Umbrüche aus der adv-Datei als Leerzeichen und bricht automatisch bei 80 Zeichen um.

Wenn man versucht, in eine Richtung zu gehen, in der keine Ausgänge definiert werden, sagt T.A.M. »Du kannst nicht in diese Richtung gehen.«

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
Schreibe passende Antworten für die beiden anderen Räume.

 

2.4    Im Dunkeln . . .

Wir haben die Haupt-Eigenschaften eines Raums kennengelernt:

Die ID, die innerhalb des Quelltext diesen Raum repräsentiert

Der Name, der in der Statuszeile erscheint und der als Kurzbeschreibung hergenommen wird, wenn der Raum bereits bekannt ist

Die Beschreibung, die dem Spieler ein Bild von seinem Aufenthaltsort vermittelt

Die Ausgänge, die entweder in einen anderen Raum führen oder einem nur sagen, dass es in dieser Richtung nicht weiter geht

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:
Räume bilden das Grundgerüst eines Adventures, die Landschaft.

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:
Handbuch, Kapitel 3.1: Räume und ihre Verbindungen


Nächstes Kapitel
Voriges Kapitel
nach oben
Inhalt


________
Startseite --> Textadventures --> T.A.G. --> Tutorium --> Kapitel 2
Übersicht
Martin Oehm

[ www.martin-oehm.de - Startseite ]
[ Textadventures ]
[ T. A. G. ]

Inhalt

Einleitung
Spielwelt
Objekte I
Objekte II
Anweisungen
Variablen
Befehle
Klassen
Personen
Diverses

Lösungen