[ t e x t f i r e . d e - Startseite ]

Sitemap
Druckversion


Werkstatt

Lesestoff in Inform

In vielen Textadventures existieren lesbare Gegenstände mit hilfreichen Hinweisen, Hintergrundwissen oder in die Irre führenden Informationen. Leider unterscheidet Inform nicht zwischen »lesen« und »untersuchen«. Dieses Manko läßt sich aber beheben.

!nach Parser.h:
Attribute readable;      !Objekt lesbar

!vor GermanG folgende Aktionsdefinitionen:
[ ReadSub;
    <<Examine noun>>;
];

[ NoReadSub;
    if (noun == player) "Deine Lebenslinie ist schwer
        zu erkennen.";
    print (GDer) noun;
    if (noun has pluralname) print " können ";
    else print " kann ";
    "nicht gelesen werden!";
];

!nach GermanG folgendes Replacement für 'lies':
Extend 'lies' replace
    * readable                      -> Read
    * 'in' readable                 -> Read
    * noun                          -> NoRead
    * multi 'auf'                   -> Take
    * 'in' noun                     -> NoRead
    * 'ueber' topic 'in' noun       -> Consult
    * topic 'nach' 'in' noun        -> Consult
    * topic 'in' noun               -> Consult
    * 'in' noun 'ueber'/'von' topic -> Consult
    * topic 'nach'                  -> Consult
    * 'ueber' topic                 -> Consult;

Der Code sollte relativ einfach verständlich sein. Man definiert das Wort 'lies' um und fängt eine Aktion Read ab, welche jedoch nur bei Objekten mit dem Attribut readable in Aktion tritt, ansonsten wird auf NoRead verwiesen, das einige Standardsprüche auf Lager hat. Falls das lesbare Objekt die Read-Aktion nicht abfängt, dann wird standardmäßig die Aktion zu einer Examine-Aktion umgeleitet.

Ein Beipielobjekt:

Object Aufzeichnung
    with name
    ...
    before [;
            Read: "Du liest die Aufzeichnung aufmerksam
              durch. Es handelt sich ausnahmslos um
              alte Kochrezepte.";
            Examine: "Einige Worte stehen auf dem
              Papier.";
    ],
    has readable;

Es gibt sicher noch elegantere Lösungen. So könnte man z.B. NoRead durch Read behandeln lassen (schließlich kann man innerhalb der Routine abfragen, ob der Gegenstand readable ist), doch diese Version erlaubt einige Spielchen. So könnte beispielsweise eine Kiste erst lesbar sein, wenn man den Staub auf ihr wegwischt. Ihr könnte man in diesem Fall einfach das Attribut readable geben und sich nicht weiter um die Konsequenzen kümmern.

24.07.2001, Max Kalus

 
[nach oben]