________________________________________________________________________
[<<] [Inhalt] [>>] III. Beispiele

16. Extras

16.1.   Ein Rang für Punkte
16.2.   Komplette Auflistung der Punkte
16.3.   Eine frei definierte Statuszeile

16.1. Ein Rang für Punkte

In Text-Adventures ist es üblich, dem Spieler je nach erreichter Punktzahl einen Rang zu geben. TAG macht das nicht, es sagt nur, wieviele Punkte in wievielen Zügen erreicht wurden.

Um eine Rangskala einzuführen, müssten wir den TAG-Befehl #punkte erweitern:

        Integer Aux

        Bef     #punkte
        NachAusf
          Text 'Das gibt dir den Rang eines'
          Sei Aux Pktzahl
          Div Aux 5
          Jenach Aux
            (0)   Text 'blutigen Anfängers.'
            (1)   Text 'Stubenhockers.'
            (2)   Text 'Möchtegern-Abenteurers.'
            (3)   Text 'Abenteurer-Gehilfen.'
            (4)   Text 'Amateurs'
            (5)   Text 'hartnäckigen Kämpfers.'
            (6)   Text 'Abenteurers.'
            (7)   Text 'Abenteurer-Großmeisters.'
          Ende
        EndeAusf

Hier wird dem Spieler gesagt, wie er auf der Punkteskala von 0 bis 350 steht. Alle 50 Punkte erreicht er einen neuen Rang. Achtung: Die Zahlen in der Jenach-Anweisung können nur von 0 bis 255 gehen. Deshalb der Umweg über die Hilfsvariable Aux.

16.2. Komplette Auflistung der Punkte

Graham Nelson hat in seinem Inform die Möglichkeit gegeben, sich eine genaue Auflistung der Punkte geben zu lassen. Mit 'full' wird geasgt, wieviel Punkte es wofür gab. Das könnte man auch in TAG machen:

        Flagge  i
        Flagge  j
        Integer Aux
        ObjVar  xObj
        RaumVar xRaum

        Bef     komplett *
        Name    'Auflistung der Punkte'
        verb    'komplett' 'k'
        Ausf
          Text 'Du hast dir deine Punkte folgendermaßen verdient:'
          Absatz

          | Ereignisse
          Schleife i 0 25
            Wenn (Pkt.i > 0) dann
              Text '  [Pkt.i]:[tab]/'
              Text 99 i
              Text '/x'
            Ende
          Ende

          | Objekte
          Lösche Aux
          Schleife iObj
            Inkr Aux ObjPkt.iObj
          Ende
          Wenn (Aux > 0) dann
            Text '  [aux]:[tab]verschiedene Gegenstände erlangen'
          Ende

          | Räume
          Lösche Aux
          Schleife iRaum
            Inkr Aux RaumPkt.iRaum
          Ende
          Wenn (Aux > 0) dann
            Text '  [aux]:[tab]wichtige Räume erreichen'
          Ende
          Text '[x]'
        EndeAusf

        Block 99
        1       'dir die Hände auf der Herrentoilette waschen'
        2       'den Vampir-Vertreter exorzieren'
        3       'das "Troll"-Drei-Sterne-Starkbier in einem Zug
                trinken'
        [...]
        25      'den Apokalypse-Zauber auf den dunklen Thron
                anwenden'

Hier werden die Ereignisse einzeln aufgelistet, und bei den Objekten und Räumen nur die Summe der Punkte. Diese Auflistung funktioniert natürlich nur, wenn PktBasis Null ist und es immer nur positive Teilpunktzahlen gibt.

16.3. Eine frei definierte Statuszeile

TAG bietet einige vorgefertigte Angaben für die Statuszeile an, die wohl die gängigen Fälle abdecken. Der Standard ist der Raumname links und die Anzahl der Züge und der Punkte rechts. Für manche Spiele kann es aber interessant sein, eine eigene Statuszeile zu entwerfen.

Dazu gibt es den String Statuszeile, der genau wie alle anderen Strings Steuerbefehle in eckigen Klammern enthalten kann. Diese Befehle werden in jedem Zug neu ausgewertet und aktualisiert, so daß man nur zu beginn das Format der Statuszeile festlegen muß, damit sie in jedem Zug angepaßt wird. Zusätzlich muß man #links (oder natürlich #rechts oder #mitte) auf den Wert 7 setzen, damit der String Statuszeile aktiviert wird.

Von diesem String werden allerdings nur die ersten 78 Zeichen (bei einer Bildschirmbreite von 80 Zeichen) genommen. Der Autor muß also aufpassen, daß der Text in der Zeile diese Länge nicht überschreitet. Der Rest wird dann abgeschnitten. Die Statuszeile ist immer nur eine Zeile hoch.

Mögliche Anwendungen für Statuszeile wären:

        Sei Statuszeile '[aRaum] ([Planet])[:60][Datum], [Zeit]'
        Sei Statuszeile '[Name][:40]HP: [HP]
                        [:52]Mana: [MP][:64]Gold:[Gold]'
        Sei Statuszeile 'Temperatur: [Temp] K
                        [:40]Außendruck [p_ext] bar'

Die Tabulatoren mit festen Werten ([:x]) bieten sich hierfür an.

Martin Oehm, 04.02.2000 Vorheriges KapitelInhaltsverzeichnisNächstes Kapitel