Next: Spielen und Erkennen: Neue
Up: Schritt für Schritt ins
Previous: Die Bevölkerung des Gartens,
Subsections
Beten, Singen, Nichtstun
-
,,Was ist der Unterschied zwischen einem Geheimrat
und einem Wirklichen Geheimrat? --
Der Geheimrat tut nichts. Der Wirkliche Geheimrat tut
wirklich nichts.''
(Autor unbekannt)
Es gibt in Inform zwei Arten von Aktionen; eine davon manipuliert
die im Spiel befindlichen Objekte (wie z.B. ##Take);
die andere tut tatsächlich nichts.31 Gibt der Spieler etwa ein: ,,Singe'', dann wird zwar die
Aktion ##Sing ausgelöst, aber es kommt
nur die Standardantwort: ,,Dein Gesang ist abscheulich''.
Im Einzelfall kann man dieses Verhalten mit before-
und react_before-Regeln abändern. Es ist
aber auch möglich, das Verhalten einer vordefinierten Aktion insgesamt
abzuändern - mittels eines speziellen Objekts LibraryMessages,
das zwischen den Befehlen Include parser;
und Include verblib; definiert werden muss.
-
- Object LibraryMessages
with before [;
wake, sleep: "Sie sagen, es sei der sechste Tag,
doch für dich ist es der Erste.
Und du bist noch nicht müde.";
strong: "Das steht so nicht bei Doktor Luther!";
pray: "~Amen.~";
sing: Psalm();
];
##Strong ist die Aktion, die bei ,,starken''
Flüchen des Spielers ausgelöst wird.
In der Regel für ##Sing wird eine -
selbständige - Routine aufgerufen, die zufallsgesteuert eine Zeile
aus verschiedenen Psalmen ,,absingt'' Die Funktion random(n)erzeugt eine Zufallszahl zwischen 1 und n.
-
- [ Psalm; ! Der erste Parameter einer selbständigen Routine ist ihr Name!
print "Du erhebst deine Stimme und singst: ";
switch (random(5)) {
1: "~HErr, unser Herrscher, wie herrlich ist dein Name in
allen Landen ...~ ";
2: "~Ich danke dem HErrn von ganzem Herzen und erzähle alle
deine Wunder ...~ ";
3: "~Ich freue mich und bin fröhlich in dir und lobe deinen
Namen ...~ ";
4: "~Das Gesetz des HErrn ist vollkommen und erquickt die
Seele ...~ ";
5: "~Halleluja! Halleluja! Haaa - leluja!~ ";
}
];
Es wäre genauso möglich, hier eine Routine aufzurufen, die ,,tatsächlich''
etwas tut (d.h. eine Veränderung der Modellwelt des Spiels bewirkt).
Hin und wieder stößt man auf Gegenstände, die zu schwer sind, als
dass die Spielerfigur sie tragen könnte; die aber mit entsprechendem
Kraftaufwand geschoben werden können. ,,Eden'' enthält
nur ein Sofa, das auf dem Fußboden eines Raumes hin- und hergeschoben
werden kann. Das ist nichts Besonderes:
-
- Object -> Sofa
with description "Es ist aus fettem kastanienbraunen Leder und
sieht gemütlich aus.",
before [;
take, lift, transfer: "Du kannst das Sofa nur
schieben, nicht heben.";
pull, push, turn:
"Das Sofa gleitet fast ohne Widerstand über den
Boden. ";
Wollten wir es ermöglichen, das Sofa von einem Raum in den anderen
zu schieben, könnten wir die Aktion ##pushdir
(im before-property) in etwa so
definieren:
-
- pushdir: if ((location == EastOfEden) && (second == in_obj))
"Das Sofa passt nicht durch die Tür."; ! rtrue
AllowPushDir();
rtrue;
Der Aufruf der Routine AllowPushDir()
teilt der Library mit, dass die Spielerfigur - wenn eine gangbare
Verbindung existiert - samt dem Sofa in den benachbarten Raum
verschoben werden kann, wenn der Spieler etwa ,,Schiebe das
Sofa nach Norden'' eingibt. Wollen wir ansonsten gangbare Wege ausnehmen,
muss das vorher abgefangen werden: Im Beispiel kann das Sofa nicht
durch die Tür in den Garten geschoben werden, denn wegen des in diesem
Fall vorher stattfindenden (impliziten) rtrue
wird AllowPushDir() nicht mehr aufgerufen.
Ohne AllowPushDir() aber kann der Spieler
schuften, was er will: er bekommt das Sofa nicht aus dem Raum.
Footnotes
- ...31
- Die ,,amtliche Bezeichnung'' ist ,,Klasse 2'' für die die Spielwelt
verändernden und ,,Klasse 3'' für die untätigen Aktionen. Klasse
1 sind die ,,Metaverben'', die zwar jede Menge tun, sich dabei aber
überhaupt nicht ins Spiel einmischen (z.B. Spielstand speichern, ein
Transkript starten o.ä.) Die Auflistung der Aktionen in Kapitel 4
enthält Informationen darüber, welche Aktionen zur einen oder anderen
Gruppe gehören.
Next: Spielen und Erkennen: Neue
Up: Schritt für Schritt ins
Previous: Die Bevölkerung des Gartens,
Frank Borger
2003-05-02