German Inform Library: Documentation
Copyright (C) 1997, 1998, 1999 Ralf Herrmann
$Release: 6.9.1$
$Revision: 1.8 $
$Date: 1999/08/01 22:06:28 $
This library is free software; you can redistribute it and/or modify it under
the terms of the GNU Library General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option) any
later version.
This library is distributed in the hope that it will be useful, but without
any warranty; without even the implied warranty of merchantability or fitness
for a particular purpose. See the GNU Library General Public License for more
details.
You should have received a copy of the GNU Library General
Public License along with this library; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Um ein deutsches Adventure zu compilieren muß beim Compileraufruf die maximale Zahl der Verben hochgesetzt als auch die Sprache angegeben werden. Angenommen alle Library Dateien (Standard und ginform) lägen im Verzeichnis lib, sähe der Aufruf so aus:
inform $MAX_VERBS=200 $MAX_ZCODE_SIZE=50000 +language_name=German +lib lib/advent.inf
ginform reserviert die Variablen @17 bis @31 für den eigenen Gebrauch. Dies sollte aber keine allzu große Einschränkung für den Autor darstellen, da diese Variablen eher selten gebraucht werden.
Aufgrund unterschiedlicher Handhabung des »ß« vor und nach der Reform der deutschen
Rechtschreibung, sowie seiner Nichtanwendung in der Schweiz als auch den Problemen
mancher Interpreter mit Umlauten erfordern und verdienen diese Sonderzeichen eine
besondere Behandlung.
In der Eingabe werden die Umlaute immer durch ae, oe, ue und ss ersetzt, woraus
folgt, dass im Wörterbuch eben diese Ersetzungen zu verwenden sind (dies erspart
den Eintrag aller umgelauteten und nichtumgelauteten Schreibungen). Für die Ausgabe
greift ginform auf verschiedene Variablen zurück, so dass Umlaute und das
»ß« gemäß der vom Spieler gewünschten Rechtschreibung gewählt werden.
Variable | Deutsch | Reform | Schweiz | Ohne Umlaut |
---|---|---|---|---|
@31 | ß | ss | ss | ss |
@30 | ß | ß | ss | ss |
@28 | ä | ä | ä | ae |
@27 | Ä | Ä | Ä | Ae |
@26 | ö | ö | ä | oe |
@25 | Ö | Ö | Ö | Oe |
@24 | ü | ü | ü | ue |
@23 | Ü | Ü | Ü | Ue |
Ein IF Autor sollte ebenfalls diese Variablen anstelle Informs üblicher Syntax, also »@28« anstatt »@:a« benutzen, damit sein Spiel sich den Erfordernissen und Wünschen des Spielers anpasst.
Object river with short_name "gr@24nen Flu@31", name 'fluss' 'gruen', description "Das Wasser des Flusses glei@30t in allen T@26nen von Gr@24n, was dem Flu@31 seinen Namen eintrug.", has male;
Über die Konstanten ANREDE_DU und ANREDE_IHR wird gesteuert, wie der Spieler ageredet wird, in freundlichem Du oder respektvollem Ihr. Soll die Anrede, entgegen der Regeln für Briefe, klein geschrieben werden, so kann dies mit der ANREDE_DU_KLEIN eingestellt werden.
Allen Objekten ist ihr grammatikalischer Genus (Maskulin, Feminin, Neutrum)
mittels der Attribute male
, female
und neuter
zuzuweisen, damit die Library diese richtig deklinieren bzw. den Artikel wählen kann.
Mit einem Artikel verschmolzene Präpositionen (ins, aufs, vom) in der Eingabe werden
in die Präposition und den Artikel zerlegt. Dies ist bei der Wahl der
Eigenschaft name
eines Objektes zu beachten, da etwa aus einer »Fliege im Bernstein«
»Fliege in dem Bernstein« wird.
Verben bei denen im Imperativ die Endung -e entfallen kann, müssen ohne diesesn Suffix in die Grammatik aufgenommen werden. Gleichfalls müssen Umlaute, wie bereits erwähnt, durch ihre Umschreibungen ae, oe, ue und ss ersetzt werden. Dadurch reduziert sich etwa der Eintrag für küsse (küsse, küss, küß, kuesse, kuess, kueß) auf kuess.
Als Name eines Objektes (Eigenschaft) sind die Stammformen der Adjektive einzutragen, etwa schwarz bei einer schwarzen Truhe, so die Library die Endungen -er, -en, -em, -es und -e abschneidet. Weiterhin sind Umlaute in ihrer Umschreibung als ae, oe, ue und ss anzugeben. Dies erspart das Eintragen von mehreren Formen (insbesondere Akkussativ und Dativ) für die Adjektive.
Object marsian with short_name "kleinen gemeinen Gr@24nling vom Mars", declination true true true false false, name 'klein' 'gemein' 'gruenling' 'von' 'dem' 'mars', has male;
Ist short_name
ein String, so muß er im bestimmten Akkussativ angegeben
sein, damit die Library ihn richtig deklinieren kann. Also das alte Fass
und nicht ein altes Fass! Ist er eine Routine, so muß diese den
Namen entsprechend der Variablen short_name_case
und indef_mode
ausgeben. Man beachte hierbei, daß für den Fall indef_mode == NULL
kein
Artikel (starke Beugung) ausgegeben wurde.
Object stoff with short_name [; if (indef_mode == NULL) !* kein Artikel switch (short_name_CASE) { CASE_NOM: "weicher Stoff"; CASE_GEN: "weichen Stoffes"; CASE_DAT: "weichem Stoff"; CASE_AKK: "weichen Stoff"; }; if (indef_mode == true) !* unbestimmter Artikel vorangestellt switch (short_name_CASE) { CASE_NOM: "weicher Stoff" CASE_GEN: "weichen Stoffes"; CASE_DAT: "weichen Stoff"; CASE_AKK: "weichen Stoff"; }; switch (short_name_CASE) !* bestimmter Artikel vorangestellt { CASE_NOM: "weiche Stoff"; CASE_GEN: "weichen Soffes"; CASE_DAT: "weichen Stoff"; CASE_AKK: "weichen Stoff"; }; ], has male;
Die Routinen der Library zur automatischen Deklination sind recht ausgereift, so daß es selten notwendig sein sollte, dies alles selbst anzugeben; mehr dazu im Abschnitt Deklination.
Für ein betretbares Objekt, Aufzug, Bank, Bett, etc., kann mittels der Eigenschaft
enter_type
die Ausgabe der Enter/GetOff/Exit Aktion angebpasst werden:
Object sessel with short_name "bequemen Sessel", enter_type enter_sitze, has male enterable;Mögliche Werte sind:
enter_tritt, enter_sitze, enter_steige,
enter_liege, enter_klettere, enter_gehe, enter_springe
Aufgrund einer Unzulänglichkeit des Parsers muß ein Artikel, sofern er sich abhängig vom Kasus ändert, als Routine deklariert werden. Allerdings kann diese auf die Routinen zur automatischen Deklination zurückgreifen.
Zwar ist die automatische Deklination bereits recht ausgereift, doch gibt es
Fälle bei denen der Autor der Library helfen muß: vornehmlich bei Namen bei denen
nicht alle Bestandteile zu deklinieren sind, bei Verwendung des Genitivs (worauf
die ginform verzichtet) oder bei substantivierten Adjektiven.
Jedes Wort des short_name
korrespondiert mit einem Eintrag der
Eigenschaft declination
, der bestimmt auf welche Weise es dekliniert
wird:
Die eigene Angabe der Deklination bei Adjektiven ist nicht vorgesehen. Sie kann nur durch "false" ganz unterbunden werden.
Die Library kann den Namen eines Objektes nur dann deklinieren, wenn der
short_name
als String vorliegt; wird er dagegen als Routine spezifiziert
obliegt dies dem Autor. Doch kann dieser auf folgende Routinen der Library
zurückgreifen:
declination
)
Sollte die Fehlermeldung Library Runtime Error 15 auftreten, so wurde für s kein String übergeben! Bei allen Aufrufen steht o für das Objekt, s einen String und p ein Flag ob das Wort im Plural steht.
Object papier with short_name [; if (self hasnt general) PrintName(self, "zerkn@24llte St@24ck Papier"); else PrintName(self, "alte Landkarte"); ], declination true false true, before [; Examine: give self general; self.declination = true true; give self ~neuter; give self female; "Vorsichtig entfaltet und gl@28ttet Ihr das Papier und erkennt: es ist eine alte Landkarte"; has neuter;
Folgende Routinen können über den print (routine) obj;
Befehl
eingesetzt werden: