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

3. Räume und Objekte

3.1.   Räume und ihre Verbindungen
3.2.   Objekte
3.3.   Klassen von Objekten und Räumen

Zunächst müssen alle Räume und Objekte sowie deren Attribute und Zustände definiert werden. Das heißt, sie müssen einen Namen bekommen, damit sie im Programm angesprochen werden können. Außerdem erhalten sie bei der Definition bestimmte Eigenschaften. Wo die Definition im Datensatz steht, ist dabei aber egal. (Ausnahme sind hier die Klassen, die im Datensatz vor den Objekten und Räumen stehen müssen, auf die sie ihre Eigenschaften vererben.)

3.1. Räume und ihre Verbindungen

In einem Text-Adventure bewegt sich der Spieler in einer Welt, die eine Landschaft aus einzelnen Räumen ist. Diese sind miteinander durch sog. Ausgänge verbunden, die in einer bestimmten Richtung liegen. Der Spieler bewegt sich durch diese Landschaft, indem er die Richtung angeben möchte, in die er gehen will. So versucht z.B. die Anweisung 'Gehe nach Norden', den Spieler in einen Raum zu bewegen, der vom momentanen Aufenthaltsort aus gesehen im Norden liegt. (In einzelnen Fällen funktionieren auch Angaben wie 'Betrete die Hütte' oder 'Gehe über die Brücke', aber die Regel ist die Fortbewegung per Richtungsangabe, vor allem schon deshalb, weil man für die Richtungen griffige Abkürzungen wie 'n', 'rein' usw. angeben kann.)

3.1.1. Richtungen

Als Richtungen bezeichnet TAG die möglichen Ausgänge aus einem Raum. Tradi- tionell sind dies die Himmelsrichtungen und die beiden Richtungen oben und unten. Je nach Zusammenhang sind aber auch andere Richtungen denkbar, z.B. 'Backbord' und 'Steuerbord'. TAG erlaubt bis zu 16 Richtungen.

Eine Richtung wird wie folgt definiert:

Richtung

Rtg 'lang' 'kurz' {*}

Rtg Kennzeichnung der Richtung in TAG
lang lange Bezeichnung der Richtung für den Parser (z.B. 'norden')
kurz kurze Bezeichnung für den Parser (z.B. 'n')

Beispiel: Es soll die Richtung Steuerbord definiert werden:

        Richtung Steuerbord 'steuerbord' 'sb'

Die Kurzbezeichnung ist in der Regel eine Abkürzung, und erlaubt daher einen knappen Eingabestil. Eingebürgert haben sich folgende Richtungen:

        N    (Norden)           NO   (Nordosten)
        O    (Osten)            SO   (Südosten)
        S    (Süden)            SW   (Südwesten)
        W    (Westen)           NW   (Nordwesten)
        H    (nach oben)        R    (nach unten)
        REIN (nach drinnen)     RAUS (nach draußen)

Diese Richtungen sind in der Datei NORMAL.ADV bereits vordefiniert. Wird der Richtungsdefinition ein Sternchen (*) nachgestellt, so wird diese Richtung als 'Standardrichtung' definiert, um die Eingabe bei der Raumdefinition zu vereinfachen:

        Richtung N 'norden' 'n' *

Näheres siehe dort. Generell sind die acht Windrichtungen Standardrichtungen.

3.1.2. Raumattribute

Raumattribute sind Eigenschaften, die ein Raum besitzt oder nicht. Bis zu 64 Raumattribute können definiert werden. Sie werden definiert mit:

RaumAttr

Attr

Attr Kennzeichnung des Attributs in TAG

Die Zuweisung der Attribute erfolgt bei der Definition der Räume.

Drei Raumattribute sind schon vordefiniert. Es sind

Dunkel
gibt an, ob ein Raum dunkel ist und wird dazu benutzt, um zu prüfen, ob der Spieler etwas sieht. Aus einem dunklen Raum kann man nur in einen hellen Raum gehen, wenn man versucht, woanders hinzugehen, stolpert man. (Tatsächlich prüft das Programm aber, ob sich an den Orten funktionierende Licht- quellen befinden. Dunkel gibt also nur an, ob ein Raum an sich dunkel ist.)

Laby
bezeichnet Labyrinthe. In einem Labyrinth kommt immer die lange Raumbeschreibung, ungeachtet des KNAPP-Modus, damit der Spieler nicht an der Raumbeschreibung sehen kann, ob er schon einmal hier war oder nicht.

Besucht
zeigt an, ob der Spieler schon einmal an diesem Ort war. Dieses Attribut wird automatisch vom Programm bestimmt, um lange oder kurze Raumbeschreibungen auszugeben.

3.1.3. Räume

Räume sind einfach zu handhaben. Die wichtigsten Eingaben bei der Raumdefinition sind die Verbindungen zu den anderen Räumen. Die Raumdefinition wird eingeleitet durch:

Raum

Raum {(RaumKl)}

Raum TAG-Kennzeichnung des Raums
RaumKl   Es kann eine Raumklasse in Klammern angegeben werden, von der der Raum Eigenschaften erbt.

Innerhalb der Raumdefinition werden folgende Anweisungen verstanden:

Name 'Name'
Name Name des Raums, der bei der Kurzbeschreibung und in der Statusleiste erscheint, etwa 'Beim Teich' oder 'Eßzimmer'
 
Std Ausg
Ausg Vordefinition der Ausgänge in den Standardrichtungen. Diese Definition muß immer vor den anderen Richtungsanwei- sungen stehen, da diese die Standardausgänge überschreiben. Mögliche Ausgänge siehe nächster Absatz.
 
Rtg Ausg
Rtg Gültiger Richtungsbezeichner wie mit Richtung definiert.
Ausg Ausgang in diese Richtung. Es gibt drei verschiedene Arten von Ausgängen:
Raum Wenn man in diese Richtung geht, kommt man in diesen Raum.
Antw In dieser Richtung ist kein Ausgang. Aber anstelle des normalen Textes 'Ich kann nicht in diese Richtung gehen.', erscheint der Text, der bei Antw definiert ist. Näheres dort.
Weg Wege sind komplizierte Gebilde. Wenn man in diese Richtung geht, passiert mehr, als in einen anderen Raum zu gelangen oder nicht. Hier müssen explizite Ausführungen eingegeben werden. Näheres bei Weg-Definitionen.
 
Attr {/}Attr1 {{/}Attr2} {{/}Attr3}...
Attr1 Attribut wie bei RaumAttr definiert. Es kann eine beliebig lange Liste von definierten Attributen angegeben werden. Die Attribute können durch vorangestellte Schrägstriche auch wieder weggenommen werden. Das ist nützlich, wenn der Raum Attribute von einer Raum-Klasse geerbt hat, der Raum aber diese geerbten Attribute nicht haben soll.
                 
Besch 'Besch'
Besch Lange Raumbeschreibung, die erscheint, wenn man den Raum zum ersten Mal betritt oder wenn man den Lage-Befehl eingibt. Diese Raumbeschreibung muß in Hochkommas gestellt werden und kann über beliebig viele Zeilen gehen. Siehe Texte.

Zu jedem Raum können zwei Ausführungsblöcke angegeben werden. Diese Blöcke sind kleine Routinen, die aus Anweisungen im TAG-Format be- stehen. Wie dieses Format genau aussieht und was man mit den Blöcken machen kann, steht in den Kapiteln 6 und 7. Hier nur eine kurze Beschreibung der beiden Blöcke:

VorAusf

wird aufgerufen, bevor der vom Spieler eingegebene Befehl ausgeführt wird, wenn sich der Spieler in diesem Raum befindet. Hier kann evtl. das Vorhaben des Spielers unterbunden werden.

NachAusf

kommt nach dem erfolgreichen Ausführen der vom Spieler eingegebenen Anweisung zum Zuge, wenn sich der Spieler in diesem Raum aufhält und beinhaltet meist eine Reaktion auf das Geschehene.

3.1.4. Antworten

Antworten sind Texte, die ausgegeben werden, wenn der Spieler nicht in diese Richtung gehen kann, aber nicht der Standardsatz erscheinen soll. Sie werden definiert mit:

Antwort

Antw

Antw Kennzeichnung der Antwort in TAG

Die einzige Anweisung bei der Antwort-Definition ist Besch, die analog zur Besch-Anweisung bei der Raumbeschreibung funktioniert.

Zum besseren Verständnis hier ein kleines Beispiel:

        Richtung  N     'norden'        'n'   *
        Richtung  O     'osten'         'o'   *
        Richtung  S     'süden'         's'   *
        Richtung  W     'westen'        'w'   *
        Richtung  rein  'drinnen'       'rein'
        Richtung  raus  'draussen'      'raus'

        Raum    Vor_dem_Haus
        Name    'Vor dem kleinen Haus'
        Std     In_Garten
        O       Im_Haus
        Rein    Im_Haus
        N       Lichtung
        Besch   'Du stehst hier westlich eines kleinen weißen
                Häuschens. Alle Fenster sind mit Brettern
                zugenagelt, die Haustür jedoch nicht.

                Durch einen farbenfrohen Garten führt ein Weg
                nach Norden auf eine Lichtung.'

        Antwort In_Garten
        Besch   'Der Pfad führt nach Norden und der Eingang zum
                Haus ist im Osten.'

        Raum    Im_Haus
        Name    'In dem kleinen Häuschen'
        Std     Gegen_Wand
        W       Vor_dem_Haus
        raus    Vor_dem_Haus
        Attr    Dunkel
        Besch   'Hier im Haus ist offensichtlich schon lange
                niemand mehr gewesen. Alles ist staubig und die
                Luft ist muffig. Ein schäbiges Sofa steht in
                einer Ecke des Raumes.

                Der einzige Ausgang ist die Tür im Westen, durch
                die ein schmaler Lichtstrahl fällt.'

        Antwort Gegen_Wand
        Besch   'Dort ist leider eine Wand.'

        Raum    Lichtung
        Name    'Auf einer Lichtung'
        Std     Unterholz
        S       Vor_dem_Haus
        Besch   'Diese Lichtung ist dünn von Bäumen bestanden,
                die aus dem dichten Gestrüpp ragen. Ein gut
                ausgetretener Pfad führt nach Süden.'

        Antwort Unterholz
        Besch   'In dieser Richtung ist das Unterholz zu dicht.'

Diese Passage definiert einen Garten vor einem kleinen Haus, einen Raum im Haus, in dem es dunkel ist und eine Lichtung. In diesem Beispiel hat jeder Raum seine eigene Antwort. Während die Antwort für den Garten maßgeschneidert ist, können die anderen auch für andere Räume in einem Haus oder in einem Wald benutzt werden. Als Richtungen wurden hier, wie in Adventures allgemein üblich, die Himmelsrichtungen und die Richtungen rein und raus definiert.

Wer will, kann diese Passage in eine leere Textdatei kopieren, sie z.B. haus.adv nennen, mit tag haus ein Adventure generieren und es dann mit tam haus ausprobieren. (Das Beispiel ist allerdings etwas langweilig, da drei Räume ohne besondere Merkmale von denen noch dazu einer stockdunkel ist, schnell ihre Faszination verlieren. Das ändert sich aber im Kapitel über Objekte.)

3.1.5. Wege

Wege sind Aktionen, die durchgeführt werden, wenn der Spieler in diese Richtung gehen will. Was passiert, und ob der Spieler im selben Raum bleibt oder in einen anderen Raum geht, wird in dieser Aktion beschrieben.

Wege definiert man wie folgt:

Weg Weg
Ausf
[...]
EndeAusf

Weg: Name des Wegs in TAG

Die Aktion wird zwischen Ausf und EndeAusf definiert. Wie man das macht, ist in Kapitel 6 beschrieben.

Insgesamt können bis zu 253 Räume, Antworten und Wege definiert werden. Es gibt bereits zwei vordefinierte Räume:

Nirgendwo
ist ein Ort, der sich nicht im sichtbaren Bereich des Spiels befindet. Er wird benutzt, um Gegenstände zu lagern, die noch ins Spiel kommen sollen.

Nirwana
ist ein Ort, der ähnlich wie Nirgendwo ist. Hier sollen Gegenstände abgelegt werden, wenn sie aus dem sichtbaren Teil des Spiels verschwunden sind.

Im Prinzip ist es egal, ob sich ein Gegenstand in Nirgendwo oder im Nirwana befindet. Es hilft dem Programmierer aber, etwas Ordnung zu bewahren. Die Anwendung der Trennung zwischen Nirgendwo oder Nirwana ist daher kein Muß, sondern liegt im Ermessen des Programmierers. Aber Vorsicht: Die beiden Räume sind nicht identisch!

3.2. Die Objekte

Mit den Räumen haben wir eine Landschaft definiert, in der sich der Spieler bewegen kann. In einem Adventure, das nur Räume enthält, ist der Spieler dazu verdammt, aktionslos umherzustreifen. Es fehlen noch Objekte, die er manipulieren kann.

Ein Objekt in TAG kann alles sein: eine Person, ein Gegenstand, den man aufheben kann, ein Gegenstand, der fest ist oder ein Teil der Landschaft. Ein Objekt kann sogar eine Gruppe von Gegenständen oder Personen sein, die man dann jedoch nur als Gruppe handhaben kann.

Zur Handhabung der Objekte kann man folgende Dinge definieren:

3.2.1. Objektattribute

Analog zu den Raumattributen können auch Objekte Attribute besitzen. Sie werden mit

ObjAttr

Attr

Attr Attribut-Kennzeichnung von TAG

definiert. Zugewiesen werden die Attribute in der Objektdefinition. Es gibt einige vordefinierte Attribute in TAG:

Person
Das 'Objekt' ist eine Person. Personen können nicht mitgenommen werden und tauchen in Raumbeschreibungen stets extra auf, z.B. "Lord Helmchen ist hier." (Dies ist zugegebenermaßen eine sehr simple Definition von "Person". Da Personen meist etwas mehr Eigenschaften als die beiden oben genannten besitzen ist der Programmcode für eine Person oft sehr lang. Mehr dazu in Kapitel 10.)

Licht
Das Objekt ist eine Lichtquelle. Ist eine Lichtquelle in einem dunklen Raum, so kann man dort sehen. Manche Objekte müssen erst angeschaltet oder angezündet werden, um zu leuchten, z.B. eine Taschenlampe oder eine Fackel. Sind sie ausgeschaltet, so ist es trotzdem dunkel. Logisch. Das Programm vermutet, daß sich das Anschalten bei Lichtquellen auf eine Leuchtfunktion bezieht. (Wer einen floureszierenden Küchen- mixer in sein Spiel einbauen wollte: Pech gehabt.)

Kleidung
Man kann das Objekt anziehen. Alles wird der Reihe nach angezogen. Ob die Socken angezogen werden, obwohl man schon die Stiefel anhat, wird nicht überprüft. Es wird aber ange- nommen, daß der Spieler seine Grundbekleidung anhat und daß nur spezielle Kleidungsstücke angezogen werden, etwa magische Ringe, Tarnkappen oder Verkleidungen.

Sitz
Ein Sitz ist ein Objekt, auf dem man sitzen kann, wie ein Stuhl oder ein Sessel. Sitzt man, so kommt man an die restlichen Objekte im Raum nicht mehr heran, es sei denn, es wird extra programmiert.

Liege
Wie ein Sitz, nur daß man auf einer Liege nicht sitzt, sondern liegt.

Standfläche
Man kann sich auf das Objekt stellen. Zum Beispiel eine Trittleiter oder ein Podest. Häufig kann ein Objekt Sitz, Liege und Standfläche gemeinsam sein.

InObj
Dies ist ein Hilfsattribut, um das richtige Pronomen für Sitze und Liegen zu benutzen. Hat ein Objekt dieses Attribut so sitzt und liegt man 'in' ihm, ansonsten 'auf' ihm. Deutsche Sprache, schwere Sprache: Wir sitzen AUF dem Stuhl, aber IM Sessel; Wir liegen IM Bett, aber AUF dem Sofa.

Behälter
sind Objekte, in die man etwas hineinlegen kann. Damit man die Objekte im Innern sehen kann, muss ein Behälter offen sein (d.h. eigentlich weder geschlossen noch abgeschlossen) oder transparent.

Ablage
Eine Ablage ist ein Objekt, auf das man etwas legen kann. Ein Objekt kann Ablage und Behälter zugleich sein.

Transparent
sind Objekte, die Behälter sind, deren Inhalt man aber sehen kann, obwohl sie geschlossen sind. Man kann den Inhalt jedoch nur sehen, nichts mit ihm anstellen. Dazu müßte man den Behälter öffnen. Personen können auch transparent sein, nämlich dann, wenn sie zeigen, was sie bei sich tragen. Im Normalfall weiß der Spieler nicht, was eine andere Person bei sich hat.

Tür
Das Objekt ist eine Tür. Tür bedeutet: Das Objekt verbindet oder trennt zwei Räume und wechselt den Ort, wenn man durch die Tür geht. Eine Tür muß also nicht unbedingt eine Tür im eigentlichen Sinne sein, sondern kann auch eine Brücke oder ein Durchgang sein. Man kann problemlos durch eine Tür von einem Raum zum anderen gehen, wenn sie nicht abgeschlossen ist. Eine Tür benötigt zwei Ortsangaben - für jede Seite eine.

Schlüssel
sind Objekte, mit denen man verschließbare Objekte auf- und abschließen kann.

Verschließbar
sind Objekte, die man mit einem Schlüssel auf und ab- schließen kann.

Fahrzeug
Ein Fahrzeug ist ein Objekt, das sich mit dem Spieler fortbewegt, wenn er sich auf oder in ihm befindet. Deshalb muß ein Fahrzeug immer zusätzlich auch eine Standfläche, ein Sitz oder eine Liege sein. Boote und Reittiere sind auch Fahrzeuge im Sinne von TAG. Grundsätzlich kann man mit einem Fahrzeug überallhin gelangen. Daß man mit dem Auto nicht durch die Haustür fahren kann und auf dem Esel keine Leiter hochreiten kann, muß extra programmiert werden.

Fluid
Das Objekt ist flüssig und kann nicht in die Hand genommen werden, sondern nur in Behältern getragen werden.

Entf
Dieses Attribut bezieht sich auf alle Objekte, die zu weit entfernt sind. Das klingt vielleicht blöd, aber stellt Euch das folgende vor: Ihr steht auf einem Aussichtsturm und ihr seht eine Stadt im Süden und das Meer im Norden. Ihr könnt es natürlich anschauen, aber sobald Ihr etwas konkretes machen wollt, kommt die Antwort "Das Meer ist zu weit weg!".

Fest
Das Objekt kann nicht aufgehoben werden. Feste Objekte sind z.B. Möbel, Bäume, Felsen, Haken in der Wand und Knöpfe auf Schaltpulten. Diese Objekte werden nicht in der Liste der sichtbaren Objekte in der Raumbeschreibung erwähnt ('Ich sehe hier...'). daher sollten diese Objekte in der Raumbeschreibung erwähnt werden.

Immobil
Das Objekt ist 'immobil'. Immobile Objekte sind wie feste Objekte, nur daß sie in der Liste der sichtbaren Objekte auftauchen. Das kann z.B. auch bedeuten, daß ein Namensschild an einem Schulranzen befestigt ist und nicht gelöst werden kann, aber bei 'u Ranzen' erscheint nach der Beschrei- bung: 'An dem Ranzen ist ein Namensschild befestigt'. Diese Art von Objekten ist eher ungewöhnlich und es ist üblicher, diese Sachen in der Raum- oder Objektbeschreibung mizuerwähnen.

Bewegt
zeigt an, ob der Spieler schon etwas mit dem Objekt angestellt hat. Dieses Attribut wird vom Programm aktualisiert. In einigen neu definierten Befehlen kann es vom Programmierer aktualisiert werden.

Bekannt
bedeutet, daß der Spieler das Objekt schon einmal gesehen hat. Dieses Attribut wird auch vom Programm aktualisiert. Natürlich besitzten alle Objekte, die 'bewegt' worden sind, dieses Attribut.

Immer
bewirkt, daß der Erst-Text, der in der Raumbeschreibung für Objekte verwendet wird, wenn sie noch nicht bewegt wurden, immer verwendet wird, also auch nachdem sie bewegt worden sind.

ansprechbar
ist ein Objekt, das keine Person ist, dem der Spieler aber Anweisungen geben kann wie einer Person. Man kann sich hier Computer mit Sprachkontrolle oder eine Sprechanlage vorstellen.

5.2.2. Zustände

Objekte können einen speziellen Zustand haben. Standardmäßig sind in TAG die folgenden Zustände definiert:

Normal normal, kein besonderer Zustand
Kaputt beschädigt
Offen geöffnet
Geschlossen geschlossen
Abgeschlossen mit einem Schlüssel o.ä. abgeschlossen
Ein ein- bzw.
Aus ausgeschaltet

Zusätzlich dazu können noch weitere Zustände definiert werden mit

Zust   

Zust{'Besch'}

Zust Kennzeichnung des Zustands in TAG
Besch Kurzbeschreibung des Zustands, meist ein Adjektiv. Wird Besch angegeben, so erscheint beim Untersuchen eines Gegenstands nach der Objektbeschreibung der Satz 'Er ist Besch.'

Zum Beispiel:

        Zust    voll 'randvoll'

Anmerkung: Ein Objekt kann immer nur einen Zustand haben. Ein Kühlschrank kann also nicht offen und ein zugleich sein. In einem solchen Fall empfiehlt es sich, das Objekt aufzuteilen in Kühlaggregat und Kühlschrank.

3.2.3. Objekte

Nun kommen die Objekte dran. Sie sind schon etwas schwieriger zu handhaben als die Räume, da sie einige Merkmale mehr haben. Sie werden definiert mit

Obj Obj {ObjKl}

Obj Kennzeichnung des Objekts in TAG

Bei der Objektdefinition werden folgende Anweisungen verstanden:

Name 'Name' Sex {Spez}
Name

Name des Objekts, wie er im Spiel auftaucht.

Der Name wird ohne Artikel angegeben. Enthält der Name Adjektive, so muß an Stelle der Endung ein Dach ('^') angegeben werden. Das ist zwar umständlich, dient aber dazu, daß die Ausgabe in korrektem Deutsch erfolgen kann, da sich die Endung mit dem Fall ändert. Richtige Namen wären also:

        'Schwert'
        'rot^ Knopf'
        'frisch gestrichen^ Bank'
                

Ein weiteres Sonderzeichen, das in Objektnamen angegeben werden kann, ist die Tilde ('~'). Sie gibt an, wenn nach Substantiven im Dativ ein 'n' angehängt werden soll. Das ist in der Regel bei Substantiven im Plural der Fall, die nicht mit 'n' oder 's' aufhören. So gäbe es dann:

        'unzählig^ Vögel~ am Himmel'
        'Leute~'
        'rostig^ Nägel~'
        'frisch^ Brötchen'
        'parkend^ Autos'
                

Die Tilde kann auch für männliche Substantive benutzt werden, an die im Akkusativ und Dativ 'n' bzw. 'en' angehängt wird. Das ist bei Worten, die auf 't' oder 'e' enden häufig der Fall, wie z.B.:

        'klein^ Junge~'
        'Student~ der Chemie'
        'des Zaren Bote~'
        'alt^ Schwede~'
        'Sextant~'
                

Wieso müssen diese Dinge noch angegeben werden, wenn es doch genaue Regeln für diese Unregelmäßigkeiten gibt? Ganz einfach: TAG weiß nicht, welche Worte Adjektive und welche Substantive sind. Außerdem kann man Worte im Namen angeben, die nur Attribute sind und nicht gebeugt werden müssen, wie z.B. 'am Himmel', 'des Zaren' und 'der Chemie' im Beispiel oben.

Sex Grammatikalisches Geschlecht des Objekts, das mit einem Buchstaben gekennzeichnet wird:
m männlich (maskulin)
f weiblich (feminin)
n sächlich (neutrum)
p Mehrzahl (Plural)
Spez Spezialausdruck für das Namensformat
0 normale Ausgabe
1 Das Objekt wird immer ohne Artikel ausgegeben wie z.B. bei Namen oder im obigen Beispiel des Zaren-Boten.
2 Das Objekt hat keinen unbestimmten Artikel
3 Anstelle des unbestimmten Artikels wird je nach Anzahl 'einige' bzw. 'etwas' benutzt: 'etwas Milch', 'einige Kieselsteine'
4 Das Objekt hat immer einen bestimmten Artikel. Dies dient dazu, um nach langen Strapazen lapidare Texte wie folgenden zu vermeiden: 'Ich sehe hier EINEN Smaragd der Weisheit'
5 Das unbestimmte Objekt wird mit dem besitzanzeigenden Fürwort 'mein' oder 'dein' ausgegeben, jenach #person: 'deine Trinkflasche'
Plural   'Name' Sex {Spez}
Name Hier kann ein Plural angegeben werden. Der Plural wird verwendet, wenn das Objekt in Wirklichkeit eine Anzahl von Objekten ist und Anz (s.u.) größer als eins ist. Bei Objektklassen bewirkt der Plural, daß Objekte derselben Klasse in Listen zusammengefaßt werden. Dazu aber mehr in Kapitel 10.2.6.
Sex Grammatikalisches Geschlecht des Plurals
Spez Spezialausdruck im Format wie oben, mit der Ausnahme, daß Null hier bedeutet, daß dem Plural die Anzahl mit einem Zahlwort vorangestellt wird ('sieben Streichhölzer').
lName 'Name' Sex {Spez
Name Der Listenname, der verwendet wird, wenn das Objekt in einer Liste, z.B. im Inventar oder in der Liste der beweglichen Gegenstände, mit anderen gruppiert wird. Dieser Name ist i.A. kürzer als der eigentliche Name. Wie das genau funktioniert steht in Kapitel 10.2.6. Plural und lName dürfen nicht beide für ein Objekt definiert sein.
Sex Grammatikalisches Geschlecht des Listennamens
Spez Spezialausdruck im Format wie beim Namen.
Adj 'Adj1' {'Adj2' ...}
Adj1 Liste von Adjektiven, die der Parser im Zusammenhang mit diesem Objekt versteht. "Leere" Adjektive ('') werden nicht akzeptiert.
Vor 'Vor1' {'Vor2' ...}
Vor1 Liste von Wörtern, die der Parser als ersten Teil eines zu- sammengesetzten Hauptworts versteht. Einige nähere Erläuterungen folgen dazu gleich.
Subst 'Sub1' Sex1 {'Sub2' Sex2 ... }
Sub1 Substantive, die der Parser im Zusammenhang mit diesem Objekt versteht.
Sex1

Genus des vorangehenden Substantivs, gekennzeichnet durch

m   männlich (maskulin)
f   weiblich (feminin)
n   sächlich (neutrum)
p   Mehrzahl (Plural)

Es kann eine beliebig lange Liste von Substantiven angegeben werden. Dabei müssen Substantive und der dazu passende Genus immer paarweise stehen.

Einige Hinweise zum Vokabular:
Der Parser versteht bis zu zwei Adjektive hintereinander, die gebeugt angegeben werden müssen:

        > NIMM DAS LANGE SCHWERT.
        > NIMM LANGES SCHARFES SCHWERT.

Bei zwei Adjektiven kann das erste auch ein Adverb, d.h. ungebeugt, sein:

        > SCHRECKLICH HÄSSLICHES ENTLEIN.
        > DIE FRISCH GESTRICHENE BANK.

Die mit Vor definierten ersten Teile des Hauptwortes können in Kombination mit jedem definierten Substantiv stehen. Das Substantiv kann aber immer auch alleine stehen. Beispiele

        Vor   'haus' 'eingangs'
        Subst 'tür' f 'eingang' m

versteht Tür, Haustür, Eingangstür, Eingang und Hauseingang, nicht aber Haus. Dafür wird aber auch Eingangseingang verstanden, was nicht ganz korrekt ist. Um mehr Eingabevielfalt zu haben, wird also in Kauf genommen, daß der Spieler "unsinnige" Wörter eingeben kann.

Die Vor-Angabe kann auch mit einem Bindestrich an das Haputwort angefügt werden: Haus-Tür.

Es muß mindestens ein Substantiv angegeben werden, Adjektive und Teile von zusammengesetzten Hauptwörtern brauchen nicht angegeben zu werden. Allerdings muß es möglich sein, ein Objekt eindeutig ansprechen zu können. Dies gilt besonders für alle beweglichen Objekte und Objekte im selben Raum.

Es gibt Fälle, wo man ein "leeres Substantiv", d.h. zwei direkt aufeianderfolgende Hochkommas mit einem nachfolgenden Genus, angeben kann. Dann muß aber mindestens ein Adjektiv angegeben werden. Dieser Fall ist für substantivierte Adjektive gedacht, die sehr häufig im Zusammenhang mit Personen vorkommen, z.B. 'der Alte (Mann)' oder 'die Blinden'.

Vielleicht findet man im Verlauf des Spiels mehrere unterschiedliche Schlüssel. Dann muß der Parser einduetig wissen, welcher Schlüssel in einem Befehl gemeint ist. Also müssen die Schlüssel verschiedenes Vokabular bekommen: 'kleiner Schlüssel', 'Haustürschlüssel', 'Hydrantenschlüssel' usw. Kein einziger darf nur 'Schlüssel' als Substantiv verstehen! Bei festen Objekten, die in verschiedenen Räumen sind, können auch gleiche Namen vorkommen. So kann es sein, daß im Labor ein roter Knopf ist und ein weiterer im Keller hinter dem Weinregal.

(Diese Regel gilt nicht für Objekte, die man nicht unterscheiden kann, wie z.B. eine Anzahl Münzen. Der Parser wählt aus den möglichen Objekten dann irgendeins aus. Es spielt ja sicherlich keine Rolle, welche Münze der Spieler aufhebt.)

Manche Bezeichnungen bestehen auch aus zwei oder mehreren Worten, wie 'Glas Wein', 'Blatt Papier' oder 'Herr Dr. Karl Weißenstein'. Deshalb prüft TAG auch nach dem erfolgreichen Finden eines Substantiv die nachfolgenden, ob sie mit den gefundenen Objekten übereinstimmen. Dies kann auch benutzt werden, um Objekte zu unterscheiden. Gibt es zum Beispiel ein Glas Milch und ein Glas Saft, so ist 'Glas' zweideutig, 'Glas Milch' aber eindeutig. Ist das einem Substantiv folgende Wort ein Substantiv, paßt aber nicht zum ersten Wort, so wird die Eingabe als zwei verschiedene Objekte betrachtet:

        > NIMM GLAS FLEISCH

wird also interpretiert als 'Nimm das Glas und das Fleisch.' Hierbei sollte beachtet werden, daß nur Akkusativ-Objekte ohne Präposition mehrfach auftreten können.

(Anmerkung: Der Parser prüft zunächst, ob die eingegebenen Adjektive und das zusammengesetzte Substantiv zusammenpassen. Unter Umständen trifft die Parser-Eingabe auf mehrere Objekte zu. Dann wird bei den meisten Verben geprüft, welche dieser Objekte sich im selben Raum wie der Spieler befinden. Der eingegebene Befehl wird nur dann weiterverarbeitet, wenn ein Objekt eindeutig angesprochen wird. Ansonsten kommt die Meldung 'Ich sehe hier kein Obj' bzw. 'Welches Obj? Obj1 oder Obj2?'.)

Ort Ort {Ort2}
Ort Ort des Objekts zu Anfang des Spiels. Ort kann folgende Sachen bedeuten: Raum Das Objekt befindet sich in diesem Raum Verh Obj Das Objekt befindet sich je nach Verhältniswort Verh IN, AUF, BEI, AN, HINTER oder UNTER einem anderen Objekt. BeiMir Ich trage das Objekt bei mir. Angezogen Ich habe das Objekt angezogen.
Ort2 wird nur bei Türen angegeben, um zu sagen, wo die Tür hin- führt. In diesem Fall können Ort und Ort2 nur Räume sein. (Das Programm prüft, ob die Tür im Raum ist und vertauscht dann ggf. die Räume. So ist es egal, von welcher Seite man die Tür zuerst sieht.) Wird Ort2 nicht angegeben, so kann man die Tür nur von einer Seite sehen und öffnen. Die Variable Obj.Ort2 dient zum Ansprechen des Zielorts im Programm, es ist eine Raumvariable.
Zust Zust
Zust Ein definierter Zustand. Wird diese Zeile weggelassen, so ist der Zustand normal, was wohl für die meisten Objekte zutrifft. Ein Objekt kann immer nur einen Zustand haben!
Attr {/}Attr1 {{/}Attr2} {{/}Attr3}...
Attr1 Attribut wie mit ObjAttr definiert. Die Liste von definierten Attributen kann beliebig lang sein, und es können beliebig viele Attr-Zeilen angegeben werden. Die Attribute können mit einem Schrägstrich versehen werden. So kann dem Objekt das Attribut wieder weggenommen werden, wenn es ihm durch eine Klassendefinition vererbt wurde.
Gew Gew
Gew

Gew gibt im allgemeinen das Gewicht des Objekts in einer frei wählbaren Einheit an. Leider ist diese Einheit nicht ganz so frei wählbar, denn das maximal tragbare Gewicht MaxGew darf 255 nicht überschreiten. Objekte, deren Gewicht größer ist als MaxGew, sind zu schwer für den Spieler. Ein Objekt kann auch ein Gewicht von 0 haben. Damit können Sätze wie 'Ich kann nicht mehr tragen.' vermieden werden, wenn man ein Blatt Papier oder eine Feder aufheben will. Feste Objekte benötigen keine Gewichtsangabe.

Es kommt nicht darauf an, das Gewicht auf ein Gramm genau anzugeben. Die Gewichtsangabe ist nur eine grobe Schätzung des Gewichts, damit das Inventar des Spielers nicht nur auf eine Anzahl von Objekten beschränkt ist. Man kann die Gewichtsabhängigkeit auch ganz weglassen, indem man zu keinem Objekt ein Gewicht definiert.

Vol Vol
Vol

gibt den Rauminhalt eines Objektes in einer beliebigen Maßeinheit an. Das größtmögliche Volumen ist 255. Vol ist nur von Bedeutung bei Objekten, die man aufheben kann. Vol wird benutzt um zu verhindern, daß größere Objekte in oder auf kleinere gelegt werden. Es ist natürlich nur eine An- näherung, da die Form des Objekts nicht berücksichtigt werden kann. Bei Behältern gibt Vol das größtmöglich nutzbare Volumen an.

Genau wie das Gewicht kann man auch das Volumen außer acht lassen.

Öffnet Obj
Obj gibt ein verschließbares Objekt an, das mit dem aktuellen Objekt aufgechlossen werden kann. Das aktuelle Objekt muß natürlich das Attribut Schlüssel besitzen. Das Objekt, das mit dem momentanen Objekt geöffnet werden kann, kann im Programm mit Obj.Öffnet angesprochen werden.
Anz Anz
Anz gibt die Anzahl der gleichen Unterobjekte an, aus denen ein Objekt besteht. Wenn das Objekt etwa eine Ansammlung von sieben Münzen ist, so ist Anz 7. Wenn Anz benutzt wird, sollte auch ein Plural angegeben werden, damit das Objekt korrekt aus- gegeben werden kann. Die Variable zum Ändern der Anzahl heißt Obj.Anz.
Besch 'Besch'
Besch Beschreibung des Objekts, die erscheint, wenn man das Objekt untersucht. Die Objektbeschreibung muß in Hochkommas gestellt werden und kann über beliebig viele Zeilen gehen. Siehe Texte. Wird Besch weggelassen, so erscheint die Standard-Antwort 'Ich finde an Obj nichts Besonderes.' (Es sei denn, das Objekt besitzt einen Text zum Lesen, beinhaltet Objekte oder hat einen Zustand, der beschrieben werden kann. Näheres dazu in Kapitel 10.)
Text 'Text'
Text Gibt einen Text an, der erscheint, wenn man das Objekt liest. Im allgemeinen ist dieser Text von der Beschreibung verschie- den. Wenn kein Text angegeben wird, erscheint beim Lesen des Objekts der Standardsatz: 'Auf Obj steht nichts.'
Erst 'Text'
Text ist ein Text, der anstelle der Liste der Objekte in der Raumbeschreibung ausgegeben wird, wenn das Objekt noch nicht benutzt worden ist, d.h. wenn es das Attribut 'bewegt' noch nicht besitzt. Danach wird das Objekt immer in die Liste der beweglichen Gegenstände in der Raumbeschreibung mit auf- genommen. Bei Personen, die nicht aufgehoben werden können, ist diese Beschreibung immer aktiv.
Dabei 'Text'
Darin 'Text'
Darauf 'Text'
Daran 'Text'
Text sind hier Texte, die die Liste der Dinge enthalten, die bei einer Person sind, sich in oder auf dem Objekt befinden oder die an dem Objekt befestigt sind. Dieser Text sollte die Textanweisung [Liste] enthalten (s. Kap. 8). Wird dieser Text nicht angegeben, so werden die Standardantworten be- nutzt, etwa 'Auf dem Tisch siehst du einen Jonagold-Apfel.'
InBesch 'Text'
Text ist ein Text, der angegeben wird, wenn das Objekt begehbar (d.h. ein Behälter und ein Sitz, eine Liege oder eine Stand- fläche) ist und sich der Spieler darin befindet. Mehr dazu in Kap 10.
Var Var {Wert}
Var

ist eine Variable für Objekte. Je Objekt können bis zu acht Variablen definiert werden. Die Variable wird kann dann später mit der Syntax

Obj.Var

angesprochen werden.

Wert

ist der Wert der Variablen, der im Bereich von 0 bis 255 liegen muß.

Anmerkungen zu Variablen für Objekte: Insgesamt können 32 Variablen für Objekte definiert werden, wobei verschiedene Objekte dieselben Variablen haben können. Dieselbe Variable kann natürlich für verschiedene Objekte verschiedene Werte annehmen. Besitzt ein Objekt eine Variable nicht, so ist ihr Wert Null. Ob eine Variable für ein Objekt definiert ist oder nicht, kann man mit der Bedingung

(Obj hat Var)

prüfen. Es empfiehlt sich, die Variablen, die bei mehreren Objekten definiert sind, direkt bei den Objekten zu definieren und Variablen, die nur auf ein oder zwei Objekte zutreffen, als globale Flaggen zu deklarieren. Zum Beispiel ist von den folgenden Möglichkeiten

Obj Bär Var gezähmt 0 ... Flagge Bär_gezähmt 0

die zweite glücklicher, es sei denn, das Spiel findet in einem Zoo statt und es gibt eine ganze Menagerie zu zähmen.

Eine typische Anwendung für eine Objektvariable wären z.B. Waffen- und Rüstungsattribute, wie sie in Rollenspielen wie 'Das Schwarze Auge' vorkommen. Hier macht es sogar Sinn, Objektklassen wie 'Waffe', 'Schild' usw. zu definieren und die Variablendefinitionen auf die Objekte weiterzuvererben. (Mehr dazu in Kapitel 5.5)

Außerdem können noch einige Ausführungsblöcke angegeben werden. Die Syntax von Ausführungsblöcken wird in Kap. 6 beschrieben. Diese Blöcke müssen mit EndeAusf abgeschlossen werden. Es können folgene Ausführungen angegeben werden:

VorAusf

wird aufgerufen, wenn das Objekt in der Spielereingabe angesprochen wurde. Hier kann definiert werden, was passiert, bevor die eigentliche Befehlsausführung durchgeführt wird. Wenn diese Ausführung negativ abgeschlossen wird, etwa durch eine Bed- oder Stop-Anweisung oder durch setzen der Flagge NullAkt, so wird die Befehlsausführung nicht weitergeführt.

NachAusf

wird nach der Befehlsausführung aufgerufen, wenn das Objekt in der Spielereingabe angesprochen wurde, um eventuelle Folgen des Befehls zu beschreiben.

VorReakt

ist die Reaktion eines Objekts vor einer Aktion des Spielers, auch wenn das Objekt nicht im Befehl angesprochen wurde. Um reagieren zu können, muß das Objekt im selben Raum wie der Spieler sein.

NachReakt 

ist die Reaktion, nachdem der Spieler die Aktion erfolgreich beendet hat.

BefAusf

wird aufgerufen, wenn der Spieler dem Objekt einen Befehl erteilt hat, wie z.B. BERND, "GEHE NACH NORDEN" oder COMPUTER, "ANALYSIERE GESTEIN". Im allgemeinen besitzen nur Personen diese Ausführung, aber sie kann für alle Objekte angegeben werden.

Wie man genau mit diesen Aktionen arbeitet und wie man sie geschickt einsetzt, wird in Kap. 7 beschrieben

Dazu einige Eingabebesipiele:

        Obj     Taschenlampe
        Name    'Taschenlampe' f
        Vor     'taschen'
        Subst   'lampe' f  'funzel' f  'leuchte' f
        Ort     BeiMir
        Zust    Aus
        Attr    Licht
        Vol     1
        Besch   'Die Taschenlampe war sehr billig, aber sie hat dir bis
                jetzt immer gute Dienste geleistet.'

        Obj     Rucksack
        Name    'alt^ Wanderrucksack' m
        Adj     'alt'
        Vor     'wander'
        Subst   'rucksack' m
        Ort     BeiMir
        Attr    Behälter Kleidung
        Vol     20
        Zust    offen
        Besch   'Mit diesem alten Wanderrucksack hat mein Großvater
                schon so manche Tour durch das Sauerland gemacht.'
        Darin   '[Liste 0] [ist 0] im Rucksack.'

        Obj     Haustür
        Name    'Haustür' f
        Vor     'haus' 'wohnungs' 'holz'
        Subst   'tür' f  'eingang' m
        Ort     Vor_dem_Haus Im_Haus
        Attr    Tür Fest verschließbar
        Zust    abgeschlossen

        Obj     Messingschlüssel
        Name    'Messingschlüssel' m
        Vor     'messing'
        Subst   'schlüssel' m
        Ort     Lichtung
        Öffnet  Haustür
        Attr    Schlüssel
        Besch   'Der Messingschlüssel hat einen simplen Bart, aber einen
                schön verzierten Griff.'
        Erst    'Neben dem Pfad glänzt ein Schlüssel im Gras,
                den hier wohl jemand verloren hat.'

        Obj     Sofa
        Name    'rot^ Sofa' n
        Adj     'abgewetzt' 'einstmals' 'rot' 'schäbig'
        Subst   'sofa' n  'couch' f
        Attr    Fest Liege Sitz Ablage
        Vol     40
        Ort     Im_Haus
        Besch   'Obwohl die (einstmals rote) Couch schon etwas abgewetzt
                aussieht, könntest du es dir dort bequem machen, um dich
                von deinen Strapazen auszuruhen.'
        Darauf  'Irgendjemand hat [liste 1] auf der Couch abgelegt.'

Hier werden folgende Gegenstände definiert:

  • Eine Taschenlampe, die der Spieler bei sich hat und die man ein- und ausschalten kann. Wenn sie eingeschaltet ist, leuchtet sie.
  • Einen Rucksack, der bis zu 20 Volumeneinheiten aufnehmen kann und den man aufziehen kann. Wenn er offen ist, und sich mindestens ein Objekt in ihm befindet, erscheint 'XXX ist/sind im Rucksack'.
  • Eine Haustür, die verschlossen ist und die vom Garten ins Haus führt.
  • Einen Messingschlüssel, der die Haustür aufschließt. Am Anfang liegt er am Wegesrand in der Lichtung, das wird in der Erst-Beschreibung gesagt.
  • Ein Sofa im Haus, auf das man Gegenstände ablegen kann und auf das sich der Spieler setzen und legen kann.

3.2.4. Dekorationen

Eine besondere Art von Objekten sind die Dekorationen. Sie können sich während des Spiels nicht verändern und sind immer fest. Sie dienen nur dazu, Sachen, die in Raumbeschreibungen erwähnt werden, mit Leben zu füllen. Sie werden mit Deko definiert:

Deko Deko

Deko: Kennzeichnung der Deko in TAG

Bei der Definition der Dekorationen werden folgende Anweisungen verstanden:

Name 'Name' Sex Spez Adj 'Adj1' {'Adj2' ...} Vor 'Vor1' {'Vor2' ...} Subst 'Subst1' Sex1 {'Subst2' Sex2 ...} Attr Attr1 Ort Ort {Ort2 ... Ort5} Ort {/}Attr Besch 'Besch'

Die Syntax ist dabei wie bei den entsprechenden Anweisungen für Objekte. Dekorationen können in bis zu fünf Orten sein. Alternativ kann als Ort ein Raum-Attribut angegeben werden, dann befindet sich die Deko automatisch an einem Ort, wenn dieser das passende Attribut besitzt. Wird das Attribut mit einem Schrägstrich versehen, so befindet sich die Deko in allen Räumen, die dieses Attribut nicht besitzen. (So kann mit Ort besucht eine Dekoration definiert werden, die immer präsent ist, z.B die Luft oder die Nase des Spielers. Dasselbe erreicht man aber mit Ort BeiMir eleganter und im Fall der Nase auch logischer.)

Außerdem können Dekos auch Ausführungsblöcke besitzen. Prinzipiell können einer Dekoration alle Attribute gegeben werden, aber das einzige, das hier Sinn macht, ist wahrscheinlich entfernt. Ein Beispiel:

        Deko    Bäume
        Name    'Bäume' p
        Vor     'laub' 'eichen'
        Subst   'bäume' p 'baum' m 'eichen' p 'eiche' f 'wald' m
        Subst   'stämme' p 'birke' f 'birken' p
        Ort     Lichtung Vor_dem_Haus
        Besch   'Der Wald ist hier sehr dicht und besteht zum größten
                Teil aus Eichen. Ein paar Birken gibt es aber auch.'

        Deko    Gartenflora
        Name    'Blumen im Garten' p
        Adj     'exotisch' 'immergrün' 'farbenprächtig' 'bunt'
        Subst   'garten' m 'blumen' p 'büsche' p 'hyazinthen' p
        Ort     Vor_dem_Haus
        Besch   'Der farbenprächtige Garten ist voll von exotischen
                Blumen, die in allen Farben blühen. Zwischen ein paar
                immergrünen Büschen blühen Hyazinthen.'

Zusammen mit den Raumdefinitionen im Abschnitt davor geben diese Objekte und Dekos schon ein kleines Adventure, das nicht ganz so langweilig ist wie die drei Raumdefinitionen alleine.

Das wichtigste an Dekorationen ist wahrscheinlich die Beschreibung. Außerdem haben Dekorationen ein großes Vokabular, um mit einem Objekt möglichst viele Sachen aus der Raumbeschreibung 'totschlagen' zu können.

Insgesamt können nur 251 Objekte und Dekos definiert werden. Es gibt vier (Hilfs-)Objekte, die schon vordefiniert sind:

Ich
ist ein Hilfsobjekt, das den Spieler meint. Es kann auch für Anweisungen benutzt werden, die der Spieler an andere richtet, wie in 'Sam, "Mix mir einen Wodka."'.

Du
meint i.a. auch den Spieler und wird für reflexive Verben benutzt. Wenn andere Personen angesprochen werden, dann wird Du in diese Person umgewandelt.

Zahl
ist ein Hilfsobjekt, das benutzt wird, wenn der Spieler eine Zahl eingegeben hat.

Zitat
bedeutet, daß der Spieler anstelle eines Objektes eine wörtliche Rede angegeben hat, die in Anführungszeichen begrenzt ist.

Diese Objekte können aber keine Eigenschaften besitzen, sie werden nur für den Parser verwendet, um zu checken, daß eine Eingabe vorliegt, die keins der definierten Objekte meint.

3.3. Klassen von Objekten und Räumen

Um die Handhabung von Räumen und Objekten einfacher und effektiver zu machen, bietet TAG die Möglichkeit, Klassen von Räumen und Objekten zu definieren, von denen Räume und Objekte Eigenschaften erben können.

Dieses Konzept wird häufig als Objektorientierung bezeichnet. Die Objektorientierung von TAG ist sehr einfach, sie arbeitet nicht mit Konstruktoren und Destruktoren, sondern sucht nur die jeweils passende Eigenschaft für ein Objekt oder einen Raum.

3.3.1. Objektklassen

Eine Objektklasse ist wie ein Objekt und wird auch wie eines definiert. Das so definierte Objekt taucht aber nie wirklich im Spiel auf, sondern ist nur die Vorlage für tatsächliche Objekte. Man sagt, Objektklassen vererben ihre Eigenschaften auf Objekte. Es gibt dabei zwei Arten der Vererbung:

Ersetzende Vererbung
Das bedeutet, daß die jeweilige Eigenschaft zunächst bei einer Objektdefinition vererbt wird. Wird dieselbe Eigenschaft für das Objekt neu definiert, so wird die vererbte Eigenschaft überschrieben, der Raum besitzt nur die neue Eigenschaft. Dies ist der Regelfall.

Erweiternde Vererbung
Hier werden die Eigenschaften der Objektklasse nicht überschrieben, sondern erweitert. Das heißt die Definitionen aus der Objektklasse existieren zusätzlich zu den neu definierten, wobei die neuen Eigenschaften jedoch den Vorrang besitzen. Bei Objekten sind alle Ausführungblöcke und das Vokabular erweiternd vererblich.

Auch Objektklassen können ihre Eigenschaften wieder von einer anderen Klasse erben. Es kann immer nur von einer Klasse geerbt werden, die bereits definiert worden ist. Auf diese Weise wird auch vermieden, daß sich Klassen gegenseitig auf sich selbst beziehen.

Die genaue Syntax zur Definition einer Objektklasse ist:

ObjKlasse OKl {(OKl2)}

OKl: Bezeichnung der Objektklasse in TAG
OKl2: Hier kann in Klammern eine Objektklasse angegeben werden, von der die Klasse ihre Eigenschaften erbt.

Nachfolgend können dieselben Definitionen gemacht werden wie bei der Objektdefinition. Zum Beispiel:

        ObjKlasse Münze
        Name    'Münze' f
        Subst   'münze' f
        Var     Wert 10
        Besch   '[Der selbst] [ist] ein örtliches Zahlungsmittel in
                Wert von [num selbst.Wert] Kronen.'
        VorAusf
          (kaufen_mit)  Bed (aObj hat Preis)
                          'Das kann ich nicht käuflich erwerben.'
                        Bed /(aObj gekauft)
                          'Du hast [den aObj] bereits gekauft.'
                        Bed (aObj.Preis = selbst.Wert)
                          '[Der selbst] [ist] [num selbst.Wert]
                          Kronen wert, [der aObj] koste[t] aber
                          [num aObj.Preis] Kronen.'
                        ObjNach selbst Nirwana
                        ObjNach aObj BeiMir
                        Text 'Topp! Du kaufst [den aObj] mit
                          [dem selbst].'
        EndeAusf

Alle Objekte, die von dieser Klasse erben, besitzen die Variable Wert. Diese Variable hat zunächst den Wert 10, kann aber in der jeweiligen Objektdefinition geändert werden. Alle Objekte der Klasse Münze verstehen das Vokabular 'münze' und befolgen die VorAusf zum kaufen von anderen Objekten. (Wie diese VorAusf genau funktioniert, steht in Kapitel 6.) Wird bei der Objektdefinition keine Beschreibung angegeben, so erscheint die Beschreibung der Klasse stattdessen. Eine mögliche Münzen-Definition wäre:

        Obj     Silberling (Münze)
        Name    'Silberling' m
        Adj     'silbern'
        Vor     'silber'
        Subst   'silberling' m  'münze' f
        Var     Wert 5

Die Beschreibung und die Anweisungen zum Kaufen können hier entfallen, da sie von der Klasse vererbt werden. Das schafft Ordnung im Quelltext, da er durch die knappen Münzen-Definitionen übersichtlicher wird.

Bei der Klassendefinition ist darauf zu achten, daß das selbstbezügliche Objekt selbst benutzt wird, da Münze nicht als Objekt verstanden wird - Es ist ja eine Objektklasse. Beim Ausführen der VorAusf oder beim Ausgeben der Beschreibung setzt TAM dann das passende Objekt für selbst ein.

3.3.2. Raumklassen

Raumklassen sind Vorlagen für Räume, genau wie Objektklassen Vorlagen für Objekte sind. Auch hier gibt es wieder zwei Arten der Vererbung, wobei aber nur die beiden Ausführungsblöcke erweiternd vererblich sind.

Auch Raumklassen können wiederum von einer anderen Klasse erben. Dabei muß aber darauf geachtet werden, daß eine Raumklasse bereits definiert sein muß, damit sie ihre Eigenschaften auf andere Klassen oder auf Räume vererben kann.

Raumklassen werden genauso definiert wie ein Raum, nur daß das Kennwort RaumKlasse anstatt von Raum benutzt wird:

RaumKlasse RKl {(RKl2)}

Dazu wieder ein Beispiel:

        RaumKlasse  Wald
        Name    'In einem Wald'
        Std     Unterholz
        VorAusf
          (riechen)     Text    'Du saugst den reichen, erdigen
                                Geruch tief in deine Lungen ein.'
        EndeAusf
        NachAusf
          (global)      Zufall Aux 1 10
                        Jenach Aux
                        (1)     Text '[#]Ein schauriges Heulen ertönt
                                     im Gebüsch.'
                        (2)     Text '[#]Du hörst etwas rascheln.'
                        (3)     Text '[#]Im Laubdach über dir hörst du
                                     eigenartige Geräusche.'
                        Ende
        EndeAusf

In jedem Raum der Klasse Wald riecht der Spieler nun den erdigen Geruch und hört in 30% der Züge eigenartige Geräusche. Diese Regeln können selbstverständlich durch eigene erweitert oder ersetzt werden. Wird für einen Raum der Klasse Wald kein Name angegeben, so heißt er 'In einem Wald' und die Standardrichtungen werden auch vererbt. Da diese Klasse keine Beschreibung besitzt, muß sie in der Raumdefinition mit angegeben werden.

Bei der Definition von Raumklassen muß man sich auf den Raum mit daselbst beziehen, das das Pendant zu selbst bei Objekten ist. Bei Räumen kommt es aber nicht so häufig vor wie bei Objekten und ist meistens gleichwertig mit aRaum.

Martin Oehm, 04.02.2000 Vorheriges KapitelInhaltsverzeichnisNächstes Kapitel