T.A.G.: Quelltext

So sieht der Quelltext des kleinen Jade-Adventures in Inform aus. Wenn man mit der Maus über die rot markierten Details fährt, oder sich mit der Tabulatortaste durch den Quelltext bewegt, werden nährere Informationen angezeigt.

Alles, was zwischen / und / steht, ist ein Kommentar und wird von Programm nicht beachet.

Mit der Direktive #DAT wird eine Datei eingebunden. normal.adv enthält einige grundlegende Definitionen.

Die Direktive #STD legt fest, in welcher Datei die Standardantworten, d.h. Texte, die von den vorgefertigten Befehlen und dem Parser kommen, stehen.

Im Block Umgebung werden einige allgemeine Angaben zum Spiel gemacht.

Eine Aktion ist ein Block mit Anweisungen, der ausgeführt werden kann. Es ist ein vereinfachtes Konzept einer Routine, es werden keine Variablen übergeben. Eine Aktion ist daher eher ein Makro.

Die Systemaktion Anfang wird bei jedem Neustart des Spiels aufgerufen und enthält meist einen Einleitungstext und Initialisierungen.

Die Schlüsselwörter Ausf und EndeAusf begrenzen einen Ausführungsblock.

Die Anweisung Text gibt einen Text aus.

Texte in T.A.G. stehen in Hochkommas und können über mehrere Zeilen gehen.

Texte können Textbefehle in eckigen Klammern enthalten. Die Textbefehle [f] und [n] schalten den Fettdruck ein und aus.

Der Textbefehl [x] bewirkt einen unformatierten Zeilenumbruch.

[#] beendet einen Absatz, d.h. einen formatierten Umbruch, normalerweise eine Leerzeile ohne nachfolgenden Einzug. Eine Leerzeile im Text wie zwei Zeilen darüber bewirkt dasselbe wie [#].

Die Anweisung geheZu bewegt die Spielerfigur an den angegebenen Ort, in diesem Fall die Lichtung

Das Schlüsselwort Raum leitet die Definition eines Raums ein.

Bezeichner in T.A.G. beachten keine Groß- und Kleinschreibung. Umlaute und das scharfe s sind erlaubt und werden wie ae, oe, ue und ss behandelt. Ebenso erlaubt sind der Unterstrich und Ziffern.

Jeder Raum bekommt einen Namen, der in der Statuszeile auftaucht.

Std (für Standard) belegt alle Ausgänge eines Raums vor.

Die Richtung N (Norden) wurde in normal.adv definiert. Eine Richtung gefolgt von einem Raumbezeichner definbiert einen Ausgang in diesen Raum.

Die Beschreibung ist ein Text, der den Raum näher beschreibt und vor der Liste der im Raum befindlichen Objekte ausgegegben wird.

Eine Antwort ist ein Ausgang, der nicht in einen anderen Raum führt, sondern dem Spieler mit einem Text sagt, dass es in dieser Richtung nicht weiter geht.

Ein Weg ist ein Ausführungsblock, der aufgerufen wird, wenn der Spieler den Ausgang in die entsprechende Richtung nimmt.

Die Anweisung Bed (Bedingung) schreibt den nachfolgenden Text und bricht den Ausführungsblock sofort ab, wenn die Bedingung nicht zutrifft. Das Ergebnis der Aktion ist dann negativ, was eventuell den Spielzug abbricht

Bedingungen in T.A.G. stehen in runden Klammern.

Die Bedingung (Objekt beimir) prüft, ob der Spieler das Objekt bei sich trägt.

Mit der Anweisung gewonnen kommt das Spiel zu einem guten Ende: Es wird eine Siegesnachricht geschrieben, und der Interpreter wird verlassen.

Mit dem Schlüsselwort Obj wird eine Objektdefinition eingeleitet.

Jedes Objekt hat einen Namen, der in Aufzählungen und allgemeinen Antworten verwendet wird.

Ein Dach im Objektnamen zeigt eine Adjektivendung an. Anstelle des Dachs tritt dan beim Ausgeben des Names die passende Endung: ein faustgroß*er Stein, der faustgroße Stein, dem faustgroßen* Stein usw.

Da der Objektname dekliniert wird, muss zusätzlich zum Namen eine Angabe über das grammatische Geschlecht gemacht werden: m (Maskulinum), f (Femininum), n (Neutrum) oder p (Plural, egal welchen Geschlechts).

Nach Adj kann eine Liste mit Vokabeln angegeben werden, die der Perser als Adjektive des Objekts versteht.

Mit Subst werden Substantive als Vokabular für den Parser definiert. Jedes Objekt muss mindestens ein Substantiv haben. Jedes angegebene Substantiv benötigt wie der Name eine Angabe über den Genus. Auf diese Weise kann der Parser zwischen der See und dem See unterscheiden.

Die Angabe Ort bestimmt, wo sich das Objekt zu Anfang des Spiels befindet, meist steht hier ein Raum.

Die Beschreibung eines Objekts wird ausgegeben, wenn der Spieler es untersucht.

Die Angabe Erst ermöglicht es, in der Raumbeschreibung einen anderen text als

Mit Deko wird eine Dekoration definiert. Eine Dekoration ist ein einfaches Objekt, das sich nicht verändern kann und in mehreren Räumen gleichzeitig sein kann. Die Definition eines Objekts und einer Deko sind identisch.

Mit Vor definiert man Vokabeln, die im Zusammenhang mit allen zum Objekt definierten Substantiven als erster Teil eines zusammengesetzten Hauptworts verstanden wird, hier z.B.

Der Block VorAusf kann das allgemeine Verhalten von Befehlen abfangen, wenn das Objekt im Parser angesprochen wurde. Das Schlüssselwort VorAusf markiert bereits den Anfang des Blocks, so dass Ausf nicht angegeben werden muss.

Alles, was innerhalb der VorAusf nach einem Befehl in runden Klammern folgt, wird ausgeführt, wenn dieser Befehl mit dem momentanen Objekt eingegeben wurde. In diesem Fall, wenn der Spieler

Mit Ausf kann man Aktionen oder - wie in diesem Fall - andere Befehle ausführen. Hier wird

Stop bricht den Ausführungsblock ohne Bedingung mit einem negativen Ergebnis ab, was in der VorAusf bedeutet, dass der eigentliche Befehl betreten nicht mehr ausgeführt wird.

Die Angabe von Kommas zwischen Listeneinträgen ist optional. Es reicht aus, Angaben mit Leerzeichen zu trennen. Hier verwende ich es, um zu zeigen, dass das f zu 'säule' gehört.

Vokabeln stehen wie Ausgabetexte zwischen Hochkommas, können aber nicht über mehrere Zeilen gehen. Wie bei Schlüsselwörtern wird Groß- und Klienschreibung nicht beachtet, und Umlaute und scharfes s sind äquivalent zu ae, oe, ue und ss.

Objekte können Attrribute besitzen, die sie näher beschreiben.

Das Attribut fest bedeutet, dass die Säule nicht mitgenommen werden kann.

Eine Ablage ist ein Objekt, auf dem anderen Objekte liegen können.

Nach der Genusangebe können bei Objektnamen weitere, optionale Angaben gemacht werden. Die Systemkonstante %immerBest bewirkt hier, dass die Statue immer einen bestimmten Artikel hat (*die* Jadestatue), auch wenn sie eigentlich mit einem unbestimmten ausgegeben werden soll, wie im Inventar.

Objekte könn nicht nur direkt in Räumen sein, sie können sich auch auf anderen Objekten befinden, wenn diese als Ablage definiert sind.

Alles, was zwischen dann und Ende steht, wird nur ausgeführt, wenn die Bedingung nach wenn wahr ist.

Die Bedingung A auf B ist wahr, wenn Objekt A auf dem Ablage-Objekt B ist.

Mit und und oder können Bedingungen verknüpft werden.

Geht einer Bedingung ein Schrägstrich voran, so wird die Bedingung verneint: /(Stein auf Säule) ist wahr, wenn der Stein *nicht* auf der Säule ist.

Mit gestorben kommt das Spiel zu einem schlimmen, meist vorzeitigen Ende: Der Spieler stirbt (oder verliert sonstwie) und kann dann das Spiel beenden, neu beginnen oder einen Spielstand laden.

/*
===========================================================
    Die Jadestatue
    Eine interaktives Exempel, Martin Oehm, 13.02.2003

    Die T.A.G.-Version des Jadestatuen-Beispiels.
===========================================================
*/

#DAT    'normal.adv'
#STD    'jade.std'

Umgebung

Name    'Die Jadestatue'
Kennung 'Jade'


Aktion  Anfang
Ausf
    Text 'Endlich! Nach tagelangem Suchen im Dschungel
        stößt du auf eine Lichtung. Und auf etwas mehr.
        Vielleicht ist dies der Ort, an dem sich die
        Jadestatue befindet?

        [f]DIE JADESTATUE[n]
        [x]Ein interaktives Exempel von Martin Oehm[#]'
    geheZu Lichtung

EndeAusf


Raum    Lichtung
Name    'Lichtung im Dschungel'
Std     Lichtung_Wald
N       Im_Schrein
Rein    Im_Schrein
S       Weg_zurück

Besch   'Du stehst auf einer Lichtung im dichten Dschungel.
        Im Norden steht ein alter, von Ranken überzogener
        Schrein. Im Süden führt ein schmaler Pfad zurück
        in die Zivilisation.'

Antwort Lichtung_Wald
Besch   'Dort ist der Dschungel zu dicht, es gibt keinen
        Pfad in diese Richtung.'

Weg     Weg_zurück
Ausf
    Bed (Jadestatue beiMir)
        'Nicht ohne die Statue!'
    Text 'Du schaffst es, mit der Statue wieder zurück in
        die Zivilisation zu gelangen.'
    gewonnen

EndeAusf

Obj     Stein
Name    'faustgroß^ Stein' m
Adj     'faustgroß' 'groß' 'rund' 'glatt'
Subst   'Stein' m

Ort     Lichtung
Besch   'Der Stein ist so groß wie eine Faust und
        außergewöhnlich glatt und rund.'
Erst    'In der Nähe des Schreins liegt ein glatter,
        runder Stein im Gras.'

Deko    Schrein
Name    'alt^ Schrein' m
Adj     'alt' 'toltekisch'
Vor     'tolteken'
Subst   'schrein' m, 'efeu' m, 'ranken' p
Ort     Lichtung
Besch   'Der alte Toltekenschrein ist fast komplett
        mit Efeu überwuchert.'
VorAusf

    (betreten)
        Ausf gehen N
        Stop
EndeAusf


Raum    Im_Schrein
Name    'Im Schrein'
S       Lichtung
Raus    Lichtung
Besch   'In dem kleinen Schrein ist es dunkel, nur wenig
        Licht fällt durch das halb verfallene Dach. Ein
        großer Lichtstrahl fällt auf eine Steinsäule in
        der Mitte des Schreins.

        Die Lichtung liegt im Süden.'

Obj     Säule
Name    'Steinsäule' f
Vor     'stein'
Subst   'säule' f, 'podest' n
Ort     Im_Schrein
Attr    fest Ablage

Besch   'Die Säule ist aus glattem Stein gehauen, etwas
        mehr als einen Meter hoch und oben flach, wie
        ein Podest.'

Obj     Jadestatue
Name    'Jadestatue' f %immerBest
Adj     'grün' 'klein'
Vor     'jade'
Subst   'statue' f, 'figur' f
Ort     auf Säule
Besch   'Es ist die Statue einer toltekischen Gottheit,
        komplett aus grüner Jade geschnitzt. Sie glänzt
        und sieht sehr wertvoll aus.'
VorAusf
    (nehmen)
    Wenn (selbst auf Säule) und /(Stein auf Säule) dann

        Text 'Als du das Gewicht der Statue von der Säule
            nimmst, hörst Du ein klickendes Geräusch. Kurz
            darauf wirst du von Giftpfeilen durchbohrt.'
        gestorben
    Ende
EndeAusf