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

Sitemap
Druckversion


Werkstatt

Die Fensterklasse

Eine Klasse, die ich sehr praktisch finde, da man des öfteren Fenster benötigt, die beim Betrachten etwas anderes zeigen, als beim Durchschauen.

!Die Klasse selbst. Herz ist die Behandlung der Aktionen
!Search und LookThrough (wird später definiert). Da wir
!die Stärken des Informobjektmodells nutzen wollen, wird
!ZRegion benützt - so kann die Methode Durchschau eine
!Routine, ein String oder auch einfach undefiniert (also
!Null) sein.

Class Fenster
    with before [address;
        Search, LookThrough: address = self.Durchschau;
            switch (ZRegion(address)) {
                0: "Du siehst nichts ungewöhnliches!";
                2: address();
                3: print (string) address, "^";
            }
            rtrue;
       Enter: "Du kannst zwar durch ", (den) self,
            " durchsehen, ", (ihn) self,
            " jedoch nicht betreten.";
    ],
    Durchschau 0,
    has scenery concealed transparent;

!Dieses Sub fängt die Aktion LookThrough ab --
!Gegenstände wie Türen, Truhen oder auch Glastische
!werden hier behandelt...

[ LookThroughSub;
    if (noun hasnt transparent)
        print_ret (GEristSiesind) noun,
        " nicht durchsichtig!";
    if (noun has container) <<Search noun>>;
        "Du entdeckst nicht spezielles, als du durch ",
        (den) noun, " hindurchschaust.";
];

!In den Verbdefinitionen muss dies eingefügt werden:
Extend 'schau' first
    * 'auf' noun                    -> Search
    * 'durch' noun                  -> LookThrough;

Beispielobjekt:

Fenster "Zellenfenster"
    with dekl 2, adj "klein",
    name "fenster" "zellenfenster" "klein" "stab"
        "staebe" "stahl" "winzig" "staehlern",
    before [; Enter: "Das wäre zu einfach gewesen...";
    ],
    description "Das Zellenfenster ist klein und mit
        dicken Stäben aus hartem Stahl gesichert.",
    Durchschau "Du kannst braungraue Hügel und einen
        bleiernen Himmel hinter tristen grauen Mauern
        ausmachen.",
    has neuter;

Der hier beschriebene Quellcode ist für Inform 6.1 mit der deutschen Library von Toni Arnold.

[aus »Das Sonnenrad«, wird auch in »Starrider« in abgewandelter Form verwendet]

01.04.2001, Max Kalus

 
[nach oben]