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 Name
n, 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 Besch
reibung 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 Name
n, 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 Besch
reibung 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 Attr
ribute 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