Turnübungen gehören zum Glück zu den selteneren Rätseln in Textadventures. Dieses Reck illustriert aber ein wichtiges Feature von TAG, die Aktion Vorher - und wie sie helfen kann, etwas ausgefallene Situationen zu implementieren.
Der Spieler steht auf der Matte, unter dem Reck. Um es zu erreichen, muss er hochspringen. Wenn er dann an dem Reck hängt, kann er mit dem Befehl ZIEHE DICH HOCH einen Felgaufschwung probieren und bekommt einen Punkt dafür.
Diese Befehle sollten für den Anfang genügen. Da der Spieler in einer ganz speziellen Situation ist, wenn er am Reck hängt, definiere ich zudem eine spezielle Flagge hängend. Etliche Verben müssen nun in der VorAusf des Raumes abgefangen werden. Wer am Reck hängt, kann nicht mit Eingabe von INVENTAR seine Turnhose durchsuchen, nicht springen, und vielleicht vor Atemnot nicht reden!
Damit ich nicht jeden einzelnen Befehl abfangen muss, verwende ich die Aktion Vorher, die übernimmt, wenn die Flagge hängend gesetzt ist und das Verb nicht separat behandelt werden soll. Sie gibt dann einen Standard-Text aus: »Das kannst du nicht tun, während du am Reck hängst!«
Es folgt der vollständige Quellcode - inklusive Initialisierung, sodass das Ersatzteil wie es ist kompiliert und ausprobiert werden kann.
#STD 'tag.std' Aktion Anfang Ausf Text '[f]Turnstunde[n] [x]Ein Ersatzteil von Florian Edlbauer (www.edlbauer.de)[x][x]' GeheZu Turnsaal EndeAusf Flagge hängend 0 | Hängt der Spieler an etwas? Bef hüpfen Name 'hüpfen' Verb 'hüpfe' 'springe' 'springe hoch' Ausf Text 'Du hüpfst wie ein Floh! Hoffentlich hat dich niemand gesehen.' EndeAusf Bef springen Name 'springen' Verb 'springe' 'hüpfe' 'schwinge dich' Syntax über dasObj Ausf Text 'Du könntest dir den Knöchel verdrehen.' EndeAusf Bef hochspringen Name 'hochspringen' Verb 'springe hoch' 'hüpfe hoch' Syntax an demObj Ausf Text 'Du springst hoch und gewinnst so für einen Sekundenbruchteil eine erhöhte Perspektive auf [den aObj].' EndeAusf Bef ziehen Name 'hochziehen' Verb 'zerre heraus' 'ziehe heraus' Verb 'ziehe raus' 'zerre raus' 'ziehe hoch' Verb 'zerre hoch' 'ziehe' 'zerre' Verb 'zerre herauf' 'ziehe herauf' 'stemme hoch' Syntax dasObj Ausf Bed /(aObj Person) '[Der aObj] wäre sicher nicht begeistert.' Bed (aObj.Gew > MaxGew) oder (aObj Deko) 'Du kannst [den aObj] nicht weit ziehen.' Text 'Es tut sich nichts.' EndeAusf Bef hochziehen_an Name 'ziehen' Verb 'ziehe hoch' 'ziehe hinauf' 'ziehe rauf' Verb 'stemme hoch' 'stemme hinauf' Syntax dasObj an demObj Ausf Bed (aObj = ich du) 'Du kannst grundsätzlich nur dich selbst an etwas hochziehen.' Text 'An [dem aObj2] kannst du dich nicht hochziehen.' EndeAusf Obj Reck Name 'Reck' n Subst 'reck' n 'gerät' n Attr fest Erst '' Besch 'Das Reck ist größer als du, selbst wenn du die Arme ausstreckst.' Ort Turnsaal VorAusf (springen) Stop 'Das Reck ist größer als du. Aber wenn du an ihm hochspringst, kriegst du vielleicht die Stange zu fassen..' (hochspringen) Ausf hüpfen Stop EndeAusf Raum Turnsaal Name 'Im Turnsaal' Besch 'Du stehst unter dem bedrohlich hohen Reck. Wenn dir nicht wenigstens ein Felgaufschwung gelingt, bist du durchgefallen - wegen Turnen!' VorAusf (lage) Wenn (hängend) dann Stop 'Du hängst am Reck.' Ende (hüpfen) Wenn /(hängend) dann Text 'Du springst am Reck hoch und bekommst die Stange zu fassen. Du hängst jetzt am Reck.' Setze hängend Stop Sonst Text 'Du lässt dich zurück auf die Erde fallen.' Lösche hängend Stop Ende (hochziehen_an) Bed (hängend) 'Du scheinst nicht in der Situation zu sein, in der du dich an etwas hochziehen könnest.' Wenn (aObj2 = Reck) dann Ausf ziehen Ende (ziehen) Wenn (aObj = ich du) dann Bed (hängend) 'Du kannst dich an nichts hochziehen!' Text 'Du ziehst dich mit deinen Armmuskeln hoch! Die Freude und die Kraft währen nur kurz. Dann fällst du auf die weiche Matte. Aber es hat gereicht, um nicht durchzufallen![x][x]' Lösche hängend Punkte 1 1 Stop Ende Ende EndeAusf Aktion Vorher Ausf Wenn (hängend) dann Wenn /(aBef = ziehen lage warten untersuchen) dann Wenn /(aBef = hochziehen_an springen hüpfen) dann Stop 'Das kannst du nicht tun, während du am Reck hängst!' Ende Ende Ende EndeAusf
Damit ist das Reck funktionsfähig, aber noch lange nicht realistisch. Wer sich jetzt die Mühe macht, allerlei Befehle abzufangen und dem Spieler LASS DICH FALLEN, KLETTERE AUF DAS RECK und ähnlich naheliegende Dinge zu erlauben, wird sich nicht wundern, dass das eigentlich kurze Spiel Begegnung am Fluss 2300 Zeilen Code umfasst.