________________________________________________________________________
[<<] [Inhalt] [>>] II. Definitionen

4. Befehle, Aktionen und Variablen

4.1.   Befehle
4.2.   Flaggen und Variablen
4.3.   Aktionen

4.1. Befehle

Die Befehle sind Verben, die zu einer Aktion zusammengafaßt werden, und die schließlich irgendetwas bewirken. Sie werden folgendermaßen definiert:

Bef Bef {*}
Bef: Kennzeichnung des Befehls in TAG.

Mit dem nachgestellten Sternchen wird der Befehl als Steuerbefehl (oder Meta-Befehl) definiert. Steuerbefehle dienen nur zur Kommunikation mit dem Programm, der Spielverlauf bleibt davon unberührt. Typische Steuerkommandos sind z.B. Speichern, Laden oder Ende.

Zu den Befehlen können folgende Anweisungen angegeben werden:

Name'Name'
NameDer Name des Befehls in Infinitivform. Er taucht dann auf, wenn dem Parser Informationen fehlen und er z.B. fragt: 'Was soll ich Name?'. Steuerbefehle wie #laden, #ende usw. benötigen keine Namen.
 
Verb'Verb1' {'Verb2' ...}
Verb1

Liste von Verben, die der Parser dem Befehl zuordnen soll. Verben können einzelne Worte sein wie 'gib' oder 'werfe'. Sie können aber auch - und das kommt im Deutschen häufig vor - aus einem Verb und einer Verbklammer bestehen, wie z.B. 'gib ab' oder 'werfe weg'. Diese beiden Worte müssen dann im String durch Leerzeichen abgetrennt werden. Mehr als zwei Worte sind in einem String nicht erlaubt, außer, wenn das zweite Wort dich oder dir ist. Dann wird ein reflexives Verb definiert, z.B. schau dich um oder nimm dir einen Keks.

Der Parser von TAG arbeitet mit der Befehlsform in der 2. Person Singular, also der Du-Form. Die meisten der Verben werden also mit 'e' aufhören. In diesen Fällen versteht der Parser auch die Befehlsform für die 2. Person Plural (ihr) und die 3. Person (Sie). Außerdem versteht der Parser auch die umgangssprachliche, aber oft gebrauchte Form ohne das 'e' am Ende. Das heißt, daß für das Verb 'springe' auch folgende Eingaben verstanden werden:

        > SPRINGT
        > SPRINGEN SIE
        > SPRING

Es lohnt sich also immer, bei unregelmäßigen Verben die re- gelmäßige Form auch zu definieren, z.B. 'stiehl', 'stehle'. (Die Ihr- und Sie-Form sind eigentlich nur für die direkte Rede nützlich, damit es keinen Stilbruch gibt, wie in HERR DR. SCHWARZ, FOLGE MIR)
 

Syntax{{Präp} dasObj/demObj {(Ort Attr)} ... {nachRitg}
Diese Zeile definiert die Syntax des Befehls, d.h. die Objekte, die der Befehl erfordert und einige zusätzliche Informationen.
 
dasObjdefiniert ein Objekt, das im Befehl als Akkusativobjekt auf- tritt. Dem Objekt kann eine Präposition vorangehen.
 
demObjdefiniert ein Objekt, das im Befehl als Dativobjekt vorkommt. Ihm kann eine Präposition oder 'mit' vorangehen.
 

Ort

ist eine Angabe, mit der eine Bedingung für den Ort verknüpft wird. In der Syntax-Definition können folgende Orte angegeben werden:

Hier
Das Objekt muß sich im selben Raum wie der Spieler befinden und darf weder weit entfernt noch in einen transparenten Behälter einge- schlossen sein. Mit anderen Worten: Man muß das Objekt nicht nur sehen, sondern auch an- fassen können. Diese Ortsangabe ist voreinge- stellt, wenn keine Angabe gemacht wird.

BeiMir
Das Objekt muß sich im Besitz des Spielers befinden. Ist das Objekt in Reichweite, so wird versucht, es zu nehmen. Dabei werden alle Sachen berücksichtigt, die beim normalen 'nehmen'-Befehl auch beachtet werden, auch die neu definierten. Ist also kein Platz mehr beim Spieler oder ist z.B. ein Objekt zu glitschig um aufgehoben werden zu klappt es nicht und der Befehl wird abgebrochen.

NichtBeiMir
Das Objekt darf sich nicht im Besitz des Spielers befinden. Ähnlich wie bei BeiMir wird versucht, es hinzulegen.

inSicht
Das Objekt muß sich im selben Raum wie der Spieler befinden, kann aber zu weit entfernt oder in einem transparenten Behälter einge- schlossen sein. Man muß es also nur sehen können.

Allg
Das Objekt kann ein beliebiges Objekt aus dem Spiel sein. Ist das Objekt nicht eindeu- tig angesprochen, so wählt der Parser das erste Objekt, auf das die Eingabe paßt, aus. Mit dieser Möglichkeit kann man z.B. Personen über Objekte fragen, die sich woanders befin- den.

Mobil
Das Objekt kann aufgehoben werden und befindet sich nicht beim Spieler. Dies wird bei 'nehmen' benutz. Ob ein Objekt aufgehoben werden kann, hängt nur davon ab, ob es nicht zu schwer ist und ob es keine Person, keine Flüssigkeit und keine Deko ist. Benutzerdefinierte Einschrän- kungen werden hier nicht berücksichtigt, erst später bei der Befehlsausführung.

Inhalt
Das Objekt muß in einem anderen enthalten sein. Diese Angabe gibt es nur für aObj, sie bezieht sich dann auf aObj2. Das Objekt muß in, auf, unter, hinter, an oder bei aObj2 sein, um berücksichtigt werden zu können.

Ist diese Ortsbedingung des Objekts nicht erfüllt, so wird der Befehl vorzeitig mit der passenden Meldung abgebrochen, z.B. 'Ich habe ... nicht bei mir.'
 

Attr

ist ein Attribut, das das angesprochene Objekt besitzen soll. Wird dieses Objekt nicht im Befehl angegeben, so versucht der Parser, anhand des Attributs ein passendes zu finden. Ist kein passendes Objekt am Ort oder gibt es gar mehrere, so fragt der Parser nach, ansonsten wird das gefundene Objekt benutzt. Diese Angabe ist keine Bedingung an das Objekt! Es können auch Objekte angesprochen werden, die das Attribut nicht besitzen!

Zusätzlich können in der Klammer noch folgende Angaben gemacht werden:

Multi
bedeutet, daß anstelle eines einzelnen Objekts auch eine Liste von Objekten angegeben werden kann.

Alles
ist wie Multi, erlaubt aber auch die Eingabe "alles" im Befehl. Worauf sich alles bezieht, wird durch den Ort und das Attribut bestimmt. Alles sollte mit Vorsicht eingesetzt werden, da Eingaben wie SCHAUE ALLES AN sehr viel Text produzieren, ohne den Spieler wirklich weiter- zubringen.

evtl
bedeutet, daß dieses Objekt nicht unbedingt im Befehl auftauchen muß. Vorsicht: Ob dieses Objekt auftaucht muß im Befehl oder im Ausfüh- rungsblock eines Objekts gegebenenfalls über- prüft werden. Es ist meistens besser zwei ver- schienene Befehle zu definieren, von denen einer das Objekt berücksichtigt, der andere nicht.

Diese beiden Optionen funktionieren nur bei reinen Akkusativ- Objekten, also bei dasObj ohne vorangehende Präposition.

nachRitg erlaubt die Angabe einer Richtung im Befehl.

Präpist eine Präposition, die mit dem nachfolgenden Objekt benutzt wird. Sie kann zur Verdeutlichung in Hochkommas gesetzt werden, muß aber nicht. Wird ein Wort nicht als Schlüsselwort erkannt und steht nicht in Klammern, so wird es als neue Präposition definiert. Vorsicht bei Tippfehlern also! Weiterhin darf nur eine Präposition je Befehl definiert werden, es sei denn die zweite Präposition ist 'mit', da dieses Wort einen Sondersta- tus besitzt.
 
Präp'Präp1' {'Präp2' ...}
Präp1Präposition, die alternativ zu der mit Syntax definierten Präposition benutzt werden kann.
 
AusfDies ist der Block, der die Ausführung des Befehls beschreibt. Dieser Block wird ausführlich in Kapitel 6.6. beschrieben. Er wird mit EndeAusf abgeschlossen und muß auf jeden Fall in der Befehlsdefinition enthalten sein.
 

Und wieder ein Beispiel:

        Bef     putzen
        Name    'putzen'
        Verb    'putze' 'wasche' 'reinige' 'säubere' 'mache sauber'
        Syntax  dasObj mit demObj (BeiMir evtl)
        Ausf
          [...]
        EndeAusf

Es ist schön, wenn Ihr zu jedem Befehl möglichst viele Umschreibungen mit Verben zulaßt. Es gibt nämlich nichts Schlimmeres, als an einem bestimmten Verb zu suchen, wenn man ein Adventure spielt. Außer BINDE sollte der Parser z.B. auch KNOTE und BEFESTIGE verstehen. Außerdem solltet Ihr die Befehle so allgemein wie möglich halten. BEFESTIGE könnte außer festbinden noch andere Aktivitäten bedeuten, vielleicht einen Magneten anheften oder einen Zettel mit einer Nadel an eine Pinnwand stecken.

In TAG sind bereits einige Befehle vorgegeben, die die wesentlichen Aktionen durchführen. Dies sind:

        gehen           nehmen          herausnehmen    herunternehmen
        hinlegen        hineinlegen     darauflegen     untersuchen
        lesen           lage            inventar        öffnen
        schliessen      aufschliessen   abschliessen    anmachen
        ausmachen       anziehen        ausziehen       sitzen_auf
        liegen_auf      stehen_auf      steigen_auf     betreten
        steigen_von     aufstehen       sagen           sagen_zu
        hineinschauen   daraufschauen   schauen         warten

Dies sind nur die allereinfachsten Verben, die am häufigsten verwendet werden. Einige gehen auch in andere über, z.B. steigen_auf wird je nach angesprochenem Objekt zu sitzen_auf, liegen_auf oder stehen_auf. Eine Erläuterung der bereits vorgegebenen Verben findet sich im Anhang C.

Außerdem sind die wichtigsten Steuerfunktionen bereits realisiert:

        #ende          #neu            #laden          #speichern
        #knapp         #ausführlich    #meldungen      #punkte
        #manuskript    #rückgängig     #fussnote

Inklusive dieser Befehle können nur 255 Befehle definiert werden. Die von TAG vorgegebenen Befehle können noch erweitert werden. Dazu wird der Befehl angegeben wie ein neuer Befehl:

Bef Bef
Bef: Kennzeichnung des Befehls in TAG.

Zu den TAG-Befehlen können folgende Anweisungen angegeben werden:

Verb 'Verb1' {'Verb2' ...} Verb1 Die Liste von Verben, die der Parser dem vorhandenen TAG- Befehl zuordnen soll, kann hier erweitert werden. VorAusf In diesem Block wird eine Aktion definiert, die vor der Aktion des Verbs in TAG durchgeführt wird. Wird diese voraus- gehenden Aktion vorzeitig beendet, so wird die eigentliche Aktion des Verbs nicht ausgeführt. NachAusf ist eine Aktion, die nach der eigentlichen Aktion des Verbs durchgeführt wird, wenn diese nicht vorzeitig beendet wurde.

Mit VorAusf unf NachAusf können die bestehenden Befehle also nach Bedarf ergänzt werden.

Zu Befehlen, die zwei Objekte benötigen, kann man einen Pseudo-Befehl definieren, der in den Vor- und Nach-Ausführungen der Objekte (Kap. 6.5) benutzt wird:

Pseudo PsBef Bef
PsBef: Name des Pseudo-Befehls
Bef: Befehl, auf den sich der Pseudo-Befehl bezieht.

Die genaue Bedeutung dieses Pseudo-Befehls wird später bei den Ausführungs- blöcken der Objekte beschrieben.

4.2. Flaggen und Variablen

Auch in TAG gibt es natürlich eine Menge von Variablen, um sich im Spielver- lauf Dinge zu merken. Da es in TAG verschiedene Datentypen gibt, gibt es auch verschiedene Arten von Variablen, die im folgenden vorgestellt werden sollen.

4.2.1. Flaggen und Integer-Variablen

Flaggen werden benutzt, um sich bestimmte Sachverhalte zu merken. Generell gibt es zwei Arten von Flaggen in TAG: Flaggen, die nur zwischen den zwei Zuständen 'wahr' und 'falsch' unterscheiden und Flaggen, die einen Zahlenwert von 0 bis 255 repräsentieren, um kompliziertere Sachverhalte darzustellen.

TAG unterscheidet nicht zwischen diesen beiden Typen. Die Flagge hat einen Zahlenwert und sie ist falsch, wenn ihr Wert 0 ist und wahr, wenn ihr Wert von Null verschieden ist. Wie die Flaggen verwendet werden, liegt auch hier im Ermessen des Programmierers.

Definiert werden Flaggen mit:

Flagge Flg {Wert}
Flg: ist die Bezeichnung der Flagge in TAG
Wert: ist der Wert der Flagge zu Anfang des Spiels. Wenn Wert nicht angegeben wird, so ist der Wert der Flagge zu Beginn des Spiels Null oder Falsch.

Manchmal benötigt man negative Zahlen oder Zahlen, die größer sind, als 255. Für diesen Fall gibt es die Integer-Zahlen. Sie entsprechen dem langen Ganz- zahlenformat und können Werte von ca. minus 2 Mrd. bis plus 2 Mrd. annehmen. Sie werden analog zu den Flaggen definiert mit:

Integer Int {Wert}
Int: ist die Bezeichnung der Integer-Variable in TAG
Wert: ist der Wert der Variable zu Anfang des Spiels. Wenn Wert nicht angegeben wird, so ist der Wert der Flagge zu Beginn des Spiels Null.

Es können 255 Flaggen und 32 Integer-Zahlen in TAG definiert werden.

Es gibt einige Flaggen, die schon von TAG vorgegeben sind:

MaxInv

beschreibt die maximale Anzahl von Gegenständen, die der Spieler bei sich tragen kann, ohne sie fallenzulassen.

MaxGew

Dies ist das Gewicht, das der Spieler mit sich tragen kann.

MaxVol

Wie InvGew, nur auf das Volumen bezogen.

Inv

Inv ist die Anzahl der Objekte, die der Spieler bei sich hat. Diese Anzahl darf MaxInv nicht überschreiten, sonst fällt ein Gegenstand herunter. Inv bezieht Gegenstände, die in anderen enthalten sind, nicht ein. Mit einer Tasche oder kann der Spieler also das Problem des Fallenlassens von Objekten umgehen.

InvGew

ist das Gewicht, das der Spieler bei sich tragen könnte.

InvVol

ist analog dazu das Volumen, das der Spieler bei sich tragen könnte, also MaxVol abzüglich des getragenen Volumens.

PktZahl

ist die Gesamtpunktzahl, die aus den einzelnen Punktzahlen ermittelt wird und die nicht überschrieben werden kann.

PktBasis

ist der Grundwert der Punktwertung, mehr dazu in 8.2

Züge

ist die Anzahl der bisher gespielten Züge

Minuten, Stunden

geben die Minuten und Stunden der Zeit im Spiel an, wenn das Spiel eine interne Zeitrechnung besitzt anstatt die Züge mit- zuzählen. Dies ist sehr beliebt bei Kriminal-Adventures. Ein Zug dauert eine Minute der Spielzeit. Andere Zeitänderungen müssen extra programmiert werden.

Nummer

ist die im Befehl eingegebene Zahl, wenn aObj den Wert 'Zahl' hat ('TIPPE 3 AUF TASTATUR')

Nummer2

ist die im Befehl eingegebene Zahl, wenn aObj2 den Wert 'Zahl' hat ('DREHE RÄDCHEN AUF 12')

Still

ist eine Systemflagge, die veranlaßt, daß keine Bildschirm- ausgabe erfolgt, wenn Still wahr ist. Dies ist praktisch, wenn man Aktionen aufrufen will, um Objekte zu manipulieren, dieses aber dem Spieler nicht gesagt werden soll.

NullText

ist wahr, wenn der letzte mit Text ausgegebene Text ein leerer Text war. Dies kann nützlich sein, wenn Text zusammen mit Flaggen benutzt wird.

NullAkt

ist wahr, wenn eine Aktion nicht ausgeführt wurde, weil eine Bed-oder Stop-Anweisung sie vorzeitig abgebrochen haben. Ist dies der Fall, so werden alle nachfolgenden Anweisungen ignoriert

NullBef

ist wie NullAkt, nur für die vordefinierten TAG-Befehle.

Fehler

ist die Nummer des aufgetretenen Parser-Fehlers. Ist Fehler Null, so ist der eingegebene Satz OK. Ansonsten steht an der Position Fehler bei den Standardantworten die passende Fehler- meldung.

zFehler

ist die Nummer des aufgetretenen Parser-Fehlers beim Unter- suchen einer Anweisung an eine Person im Spiel.

Nummer, Nummer2, Züge, PktZahl und PktBasis sind Integer-Zahlen, alle anderen Systemflaggen liegen im Bereich von 0 bis 255.

4.2.2. Konstanten

Manche Zahlen ändern sich nicht während eines Spiels. Dennoch werden sie häufig benutzt und so ist es sinnvoll sie als Konstanten zu definieren. Das geschieht wie folgt:

Konst Konst Wert Konst Bezeichnung der Konstante in TAG Wert Wert der Konstante. Dieser Wert muß angegeben werden, da es keine Möglichkeit gibt, der Konstante währen des Spiels einen Wert zuzuweisen.

Konstanten können nur Werte von 0 bis 255 annehmen. Folgende Konstanten sind automatisch von TAG belegt:

minObj, maxObj erstes und letztes definiertes Objekt
minDeko, maxDeko erste und letzte Deko
minRaum, maxRaum erster und letzter Raum
minRitg, maxRitg erste und letzte Richtung

Diese Konstanten sind sinnvoll für Schleifen über alle Objekte oder über alle Räume. Die Objekte und Räume sind natürlich intern durchlaufend numeriert und zwar in der Reihenfolge ihres Auftretens im ADV-Datensatz. Mit einer Schleife von minObj bis maxObj durchläuft man also alle Objekte. Diese Konstanten sind jeweils vom Typ Objekt, Raum und Richtung.

4.2.3. Felder

Für flexibles Programmieren steht dem fortgeschrittenen Text-Adventure-Autor die Möglichkeit zur Verfügung, Felder zu definieren. Insgesamt können folgen- dermaßen 32 Felder definiert werden:

Feld Feld (Dim1 {Dim2} {Dim3}) Feld Bezeichner des Feldes in TAG Dim Dimension des Feldes. Es können bis zu drei Dimensionen eines Feldes angegeben werden. (Nicht angegebene Dimen- sionen sind automatisch eins.)

Das Produkt der Dimensionen darf nicht größer sein als 256, da in jedem Feld maximal 256 Speicherplätze zur Verfügung stehen. Auch die Werte selbst können nur im Bereich von 0 bis 255 liegen. Der Anfangswert aller Elemente im Feld ist natürlich Null, ein Feld kann nur in einem Anweisungsblock belegt werden.

Ein Wert in einem Feld wird angesprochen mit:

Feld.Zahl oder Feld.Flg

Dabei können tatsächlich nur definierte Flaggen oder Zahlen angegeben werden. Zum Arbeiten sollte also eine Hilfsflagge definiert werden, so daß verschach- telte Poistionen auf einem Feld leichter angesprochen werden können.

Die Feldbelegungen fangen immer bei 0 an. Das Feld Wald (9) hätte also die Einträge

        Wald.0, Wald.1, Wald.2, ... Wald.8

Die Einträge Wald.9 und darüber existieren nicht. (Sie können angesprochen werden, aber ihr Wert ist immer Null. Auf keinen Fall können sie mit Werten belegt werden.)

Mehrdimensionale Felder haben Feldeinträge von 0 bis Dim1*Dim2*Dim3 - 1. Die Indizes der einzelnen Dimensionen gehen wieder von 0 bis Dim - 1. Das Feld wird intern als eindimensional behandelt und man kann die eindimensionale Position der Position (x, y, z) berechnen aus:

        Pos = (x*Dim1 + y)*Dim2 + z

Da das Arbeiten mit Feldern in TAG nicht besonders leicht ist, gibt es ein paar Anweisungen, die dem Autor das Leben etwas erleichtern. Sie sind in Kap. 5.1.6. beschrieben.

4.2.4. Raumvariablen

Um bestimmte Räume abspeichern zu können, bietet TAG die Möglichkeit, Raum- variablen zu definieren. Ähnlich, wie eine Variable einen Zahlenwert hat, so hat eine Raumvariable einen Raum als Wert. Definiert wird eine Raumvariable folgendermaßen:

RaumVar RVar {Raum} RVar Bezeichner der Variablen in TAG Raum Hier kann ein Raum angegeben werden, auf den sich die Variable zu Beginn des Spiels bezieht. Wird keiner angegeben, so ist die Variable Null, sie bezieht sich also auf keinen Raum.

Es gibt bereits zwei Variablen, die vordefiniert sind:

aRaumist der aktuelle Raum, in dem sich der Spieler befindet. Er wird vom Programm aktualisiert und ist immer einer der im Quelltext definierten Räume.
 
daselbst  ist eine selbstbezügliche Raumvariable, die bedeutet: der Raum, der gerade in Betracht gezogen wird. Diese Variable wird häufig bei der Vererbung von Raum-Eigenschaften verwendet und wird dort näher beschrieben.
 

Insgesamt können bis zu 63 Raumvariablen definiert werden.

4.2.5. Objektvariablen

Für Objekte gib es natürlich auch die Möglichkeit, Variablen zu definieren. Hier können den Variablen nur ein bestehenden Objekt oder der Zahlenwert Null zugewiesen werden. Die Definition einer Objektvariable ist:

ObjVar OVar {Obj} OVar Bezeichner der Variablen in TAG Obj Hier kann der Anfangswert der Variable angegeben werden, der natürlich ein definierts Objekt sein muß.

Es gibt neun vordefinierte Objektvariablen:

aObj, aObj2

und aObj3 sind die Objekte, die in der Eingabe des Spielers angesprochen wurden. Näheres dazu im Kapitel über den Parser und im Ab- schnitt über die Befehlsdefinition.
 

Akteur

ist derjenige, der einen Befehl ausführen soll. Ist Akteur Null, so ist der Spieler der Akteur, was fast immer der Fall ist.
 

selbst

ist die selbstbezügliche Objektvariable, die bedeutet: das Objekt, das gerade bearbeitet wird (welches auch immer). Diese Variable wird häufig bei der Klassen-Definition verwendet.
 

aSitz

ist das Objekt, auf dem der Spieler sitzt, steht oder liegt. Ist aSitz = 0, so steht der Spieler mit beiden Füßen im Raum. (Die Variable bSitz gibt an, ob der Spieler auf aSitz steht, liegt oder sitzt.)
 

iObj

ist eine allgemeine Objektvariable, die häufig in den TAG- Routinen verwendet wird und die auch häufig in den Standard- Antworten auftaucht.
 

Innenraum

ist das Objekt, in dem sich der Spieler befindet und das ein Behälter und ein Sitz, eine Liege oder eine Standfläche ist. Wenn in einem Raum z.B. ein Käfig steht, in den der Spieler geht, so ist Innenraum = Käfig.
 

esObj

ist ein Objekt, auf das sich der Sieler mit den Pronomen be- ziehen kann. Es wird vom Programm bestimmt, aber manchmal möchte man es auch verändern.
 

Es können - diese Variablen mitgezählt - 63 Objektvariablen definiert werden.

4.2.6. Weitere Variablen

TAG bietet auch die Möglichkeit, Zustände, Richtungen oder Befehle auf Variablen zu legen. Diese Variablen werden weitaus weniger benötigt, sind aber trotzdem hin und wieder sinnvoll.

Richtungsvariablen definiert man wie folgt:

RitgVar RiVar {Ritg} RiVar Bezeichner der Variablen Ritg Eventuell Vorbelegung mit einer Richtung

Eine vordefinierte Richtungsvariable in TAG ist:

aRitg die Richtung, die im Befehl des Spielers verwendet wurde.

Zustandsvariablen werden folgendermaßen definiert:

ZustVar ZVar {Zust} ZVar Bezeichner der Variablen Zust Eventuell Vorbelegung mit einem Zustand

Es gibt hier keine vordefinierten Variablen

Und die Definition von Befehlsvariablen:

BefVar BVar {Bef} BVar Bezeichner der Variablen Bef Vorbelegung mit einem Befehl

Vordefiniert ist hier:

aBef der Befehl, der als Ergebnis der Textanalyse der Eingabe des Spielers bestimmt wurde. (Siehe Kapitel 2)

Es können jeweils 63 Richtungs-, Zustands- und Befehlsvariablen definiert werden.

4.2.7. Strings

Strings sind Textvariablen. Intern wird in TAG jeder Text als eine Position auf den Texblöcken dargestellt, und zwar in der Form Block Nr. Deshalb kann man auch Texte entweder explizit zwischen zwei Apostrophen oder implizit als Block- und Textkennung angeben. Ein String wird folgendermaßen definiert:

String Strg {'Text'} Strg Bezeichner in TAG Text Text in einfachen Anführungszeichen. Wird kein Text angegeben, so ist der String leer (bzw. Block und Nr sind beide Null).

Strings sind sehr praktisch zum variablen Definieren von Texten, die normalerweise statisch sind. In TAG gibt es nicht die Möglichkeit, Objekt- und Raumbeschreibungen oder -namen als Routinen anzugeben. Deshalb kann man Strings in diese Texte einbetten, um sie variabel zu machen.

Ein String ist bereits vordefiniert:

Statuszeile kann in der Statuszeile benutzt werden, wenn es in der Umgebung so definiert ist. (Siehe Kap. 8: einer der Parameter von Status muß den Wert 7 haben.)

Es können 63 Strings definiert werden.

4.3. Aktionen

Aktionen sind Folgen von Anweisungen zum Manipulieren von Objekten, Räumen und dem Spieler. Sie können definiert werden, um häufig wiederkehrende Passagen abzukürzen. Sie können von anderen Aktionen aufgerufen werden.

Aktionen werden wie folgt definiert:

Aktion Akt {*}
Ausf
[...]
EndeAusf


Akt: Name der Aktion in TAG

Das Sternchen kann angegeben werden, wenn die Aktion in jedem Zug aufgerufen werden soll. Das kann für zeitabhängige Ereignisse sehr nützlich sein. Wenn eine Aktion für jeden Zug, also mit einem Sternchen, definiert wurde, braucht die Aktion keinen Namen zu besitzen. (Der Name dient natürlich zum Aufrufen der Aktion, und da Aktionen, die in jedem Zug aufgerufen werden, in der Regel sowieso nur dort aufgerufen werden und dies vom Programm automatisch bewerkstelligt wird, kann der Name hier entfallen.)

Die Aktion wird zwischen Ausf und EndeAusf definiert. Wie man das macht, ist im nächsten Kapitel beschrieben.

Eine genaue Übersicht über den Einsatz von Aktionen und über den Ablauf eines Spielzuges im nächsten Kapitel.

Martin Oehm, 04.02.2000 Vorheriges KapitelInhaltsverzeichnisNächstes Kapitel