IF-Forum

» IF-Forum - Autorencafé - Schreiben! - Über Mauer klettern
AntwortenNeues ThemaNeue Umfrage

Über Mauer klettern

Geschrieben um 19:05 am 10.07.2003 | Zitat | Editieren | Löschen
Atera
Mitglied
Baby Gumby
Beiträge: 4

Hi!

Ich versuche mich gerade an einem eigenem Adventure bzw. versuche ich mich so ein wenig in TAG einzuarbeiten.

Ich möchte nun einen Raum Straße kreiern, der auf der westlichen Seite eine Mauer hat. Wenn man auf die Mauer klettert, kann man auf der anderen Seite runterspringen und gelangt in den Garten.

Ich habe noch keinen Code aufgestellt, weil ich mich frage wie ich das am besten aufstellen soll.

Ich schätze mal zunächst brauche ich die Definition des Befehls 'klettern' und vielleicht eine Zufallschance, wann man es auf die Mauer schafft. Im Moment überlege ich aber, wie ich die Räume aufteile. Soll ich Garten und Straße in einen großen Raum fassen mit der Mauer als Objekt und mit Erreichbarkeit und Sichtbarkeit von Objekten arbeiten oder ist es einfacher Garten, Mauer und Straße einzeln als Räume zu machen oder die Mauer als Objekt in beiden Räumen Straße und Garten vorkommen zu lassen (wobei ich da das Problem habe, dass man ja nur nach Westen bzw. Osten gehen können sollte, wenn man auf der Mauer ist).

Hat jemand eine Idee, was sich da am besten eignet? Den Richtungsbefehl "hoch" hier bei der Mauer zu verwenden, scheidet da leider irgendwie aus, da ich den schon für die östliche Häuserfassade nehmen wollte, wo man aufs Dach klettern kann.

Also danke schon mal vorab für Hilfe (o:

-Atera

Geschrieben um 03:46 am 11.07.2003 | Zitat | Editieren | Löschen
NearDark
Gast

Hi !

Also erstmal vorweg: Ich kann nur eine Empfehlung auf Grund meiner geringen Erfahrung geben. Natürlich gibt es verschiedene Lösungen und Möglichkeiten.

Meine Tips und Gedanken:

Wenn ich dich richtig verstanden habe, so soll die Spielfigur auf der Mauer stehen können und der Spieler muss sie von dort per Befehl in den Garten oder umgekehrt bewegen. Das halte ich persönlich für nicht so gut, weil du eine Menge von Möglichkeiten abfangen und vorhersehen müsstest.

springe in den Garten

und

springe nach Westen

und

kletter nach Westen die Mauer runter

sollten dann ebenso möglich sein wie,

kletter an der Mauer runter

Derlei würde es einige Beispiele mehr geben. Da könnten also einige Probleme lauern für deren Beseitigung du vielleicht viel Energie verschwendest, die du woanders reinstecken könntest.

Wenn dem Spieler nicht irgendwas interessantes auf der Mauer erwarten soll, so würde ich ihn einfach über die Mauer in den Garten transportieren.


>kletter an Mauer hoch               !! oder >kletter über Mauer

Zielstrebig setzt du deine Füße in kleine Spalten, während deine Hände jede Unebenheit des Mauerwerks ausnutzen um dich immer höher zu ziehen. Nach kurzer Zeit bist du oben angekommen und läßt dich federnd auf die andere Seite fallen.

Ein bunter und wohlriechender Garten umfängt wohltuend deine gekränkte Seele. bla bla bla bla

usw.

Was mich gleich zur Raumaufteilung führt. Für mein obiges Beispiel würde ich die Straße und den Garten als Raum einbauen. Die Mauer wiederrum als Objekt oder Deko in beiden. Jetzt nur noch den Befehl "klettern" entsprechend modifizieren und aus die Maus. Mit Sichtbarkeit und Erreichbarkeit bräuchtest du bei diesem Fall auch nicht rumfummeln.

In meinem Projekt existiert ein ähnlicher Fall wie bei dir. Statt der Mauer erwartet dem zukünftigem Spieler eine Grube zwischen zwei Räumen und eine Planke darüber. Bei mir kannst du entweder

a) über die Planke balancieren

b) über die Grube springen

c) einfach nach Westen oder Osten gehen

Bei c) erscheint ein Menü welches die Punkte a) und b) und den Abbruch durch eine Zifferauswahl regelt.

Und bei mir findest du zwei Räume und zweimal die Deko Grube. Und obwohl an dieser Stelle für den Spieler einiges passieren kann, empfand ich diese Lösung beim proggen als nicht schwer oder gar unübersichtlich.

So, das war es erstmal. Bin schon neugierig auf weitere Antworten und Anregungen. :D

Bye,

ND

Geschrieben um 15:20 am 14.07.2003 | Zitat | Editieren | Löschen
zuDaniel
Mitglied
Student Gumby
Beiträge: 32

!Erst einmal den Befehl

Bef       'Klettern'

Verb      'Klettere'

Syntax    auf dasObj

Ausf

       Wenn (aObj=Mauer) dann

        Text  'Du kletterst mühsam auf die Mauer.[#]'

GeheZu  Auf_der_Mauer

!Hier müssen noch die Namen der Objekte rein, auf denen man

!auch klettern kann(siehe unten bei Gast)

...

!Jetzt die reaktion, falls man nicht draufklettern kann:

  sonst

Stop 'Wie willst du den da Hochklettern und warum?'

!Achte darauf; für jedes 'Wenn_dann' musst du unten ein Ende dranhängen!

Ende !Dieses Ende ist eines davon!

EndeAusf

!Jetzt der zwischenraum, auf der Mauer

Raum      'Auf_der_Mauer'

N         Garten

S         Stadt

Besch      'Du bist auf der Mauer, im Norden siehst du einen Garten, und im Süden siehst du wieder die Stadt.'

Das müsste dann so aussehen:


Du bist in der Stadt, im Norden siehst du eine Mauer.

> Kletter auf die Mauer

Du kletterst mühsam auf die Mauer.

Du bist auf der Mauer, im N siehst du einen Garten, und im Süden siehst du wieder die Stadt.

> Gehe Nach Norden

...

Natürlich musst du noch einige Stellen im Quelltext ändern, ich glaube nicht, das du die gleichen Bezeichnungen genommen hast.

Ich habe den Quelltext nicht ausprobiert, er müsste aber jetzt eigentlich klappen.

Geschrieben um 14:26 am 15.07.2003 | Zitat | Editieren | Löschen
Gast
Gast

Hallo!

Danke für eure Antworten, ich bastle gerade an dem Quelltext herum. Wegen dem Befehl klettern, das wird komplizierter als ich anfangs dachte, da ich mindestens drei Sachen habe worauf der Spieler klettern dürfen sollte.

Ich habe nun überlegt, ob ich vielleicht ein neues Objekt Attribut 'erkletterbar' definieren sollte. Und man vielleicht automatisch, wenn man auf dem betreffenden Objekt steht in den betreffenden Raum gebracht wird.

Also z.B. erklettere Balkon usw.

Mein Code sähe nun so aus:


ObjAttr   erkletterbar

Bef     klettern

Name    'klettern'

Verb    'klettere' 'klettre' 'erklimme'

Verb    'kraxle'

Syntax  auf dasObj (NichtBeiMir erkletterbar)

Syntax   an demObj (NichtBeiMir erkletterbar)

Präp   'hoch' 'über'

Ausf

  Wenn (aObj erkletterbar) dann

      Text 'Du setzt deine Füße in kleine

      Mauerritzen, nutzt jede Unebenheit aus,

      um dich mit den Händen nach oben zu ziehen

      bis du es geschafft hast.[#]'

  sonst

  Text 'Du kannst nicht auf [den aObj] klettern.'

Ende

EndeAusf

Obj   Mauer

Name   'Mauer' f

Adj   'hoch' 'hohe'

Vor   'backstein'

Subst   'wand' f 'mauer' f

Ort   Strasse

Attr   fest erkletterbar

Besch   'Eine hohe lange Mauer, die sich

   die ganze Westseite über erstreckt.

   Zwischen den Backsteinen gibt es einige

   Ritzen und Lücken.'

NachAusf

 (klettern)

 GeheZu Auf_der_Mauer

 Ende

EndeAusf

Raum   Auf_der_Mauer

Name   'Auf der Mauer'

O   Strasse

Besch   'Du stehst nun auf der Mauer.'

Ja, natürlich müßte man den Raum Auf_der_Mauer noch ausbauen, aber im Prinzip glaube ich/hoffe ich klappt das so (o;

Hm, mal ne andere Frage:

In den Standartantworten gibt es ja auf den Befehl 'untersuche mich' etc. die übliche Antwort 'Du siehst hinreißend aus' blablabla. Ist es möglich diese Antwort zu verändern ohne dass man gleich eine neue Standard-Antworten Datei dafür erstellen muss?

Und ein zweites Problem, dass ich immer wieder habe, ist, dass beim Betreten des Raumes Objekte mit aufgelistet werden, die ich da eigentlich nicht aufgelistet haben wollte.

Beispiel: Hinter einer Kiste steht eine Whiskyflasche. In der Flasche ist Whisky.

Wenn der Spieler nun den Raum betritt bekommt er die Meldung, dass hier eine Kiste steht und dass in der Whiskyflasche Whisky ist. Ich frage mich also wie man solche Meldungen unterdrücken kann.

-Atera

Geschrieben um 14:28 am 15.07.2003 | Zitat | Editieren | Löschen
Atera
Mitglied
Baby Gumby
Beiträge: 4

Ups, war wohl nicht mehr eingeloggt. Obiger Post ist von mir.

Sorry.

Geschrieben um 15:22 am 15.07.2003 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

Ein Wissender:

Na da geht mir ein Licht auf!

So? Mir geht da eher der Hut hoch.


Bef       'Klettern'

Verb      'Kletter' 'Klettere'

Syntax    auf denObj

Ausf

   Text  'Du kletterst mühsam auf die Mauer.[#]'

   GeheZu  Auf_der_Mauer

EndeAusf

Es muss dasObj heißen. Außerdem sind 'kletter' und 'klettere' redundant, da T.A.G. das Verb 'klettere' auch in den Formen 'kletter' und 'klettre' versteht.


Raum      'Auf_der_Mauer'

N         'Garten'

S         'Stadt'

Die Angabe der Zielorte müssen ohne Anführungszeichen angegeben werden.

Das Ganze sieht dann so aus:


Bei den Abflussrohren am Strand.

Der Strand erstreckt sich hier scheinbar endlos nach

Osten und Westen. Ein paar rostige Abflussrohre, die

aus dem Industriegebiet im Norden kommen, leiten eine

übel riechende Flüssigkeit in das Meer.

Hier sind eine Plastiktüte und ein toter Fisch

> klettere auf toten Fisch

Du kletterst mühsam auf die Mauer.

Auf der Mauer

Du bist auf der Mauer, im Norden siehst du einen Garten,

und im Süden siehst du wieder die Stadt.

Der Code fürs Klettern üerprüft gar nicht, auf welches Objekt geklettert werden soll. In die Ausf des Befehls gehört eine allgemeine Absage, der Code fürs Auf-die-mauer-Klettern sollte beim Objekt Mauer stehen.

Zitat:

Natürlich musst du noch einige Stellen im Quelltext ändern.

Natürlich.

Zitat:

Ich habe den Quelltext nicht ausprobiert, er müsste aber eigentlich klappen.

Leider ist der Quelltext sehr fehlerhaft. Wieso probierst Du ihn nicht aus, bevor Du ihn postest? In seiner jetzigen Form isr er, besonders für Einsteiger, nicht hilfreich, sondern eher verwirrend. (Ok, ok, ich poste auch öfters Code ins Forum, ohne ihn getestet zu haben, aber ich habe auch schon etwas mehr Erfahrung mit T.A.G. Und ich schaue meistens vorher im Handbuch nach.)

Aber mal zum eigentlichen Thema des Threads:

Aufteilung der Räume. Ich würde alles so einfach wie möglich halten und auf Modifikationen von Sicht und Reichweite verzichten. Also wäre die Straße ein Raum und der Garten ein anderer. Vom Garten kann man nicht auf die Straße sehen und umgekehrt. Die Mauer wäre dann entweder auch zwei Objekte, Mauer_Straße und Mauer_Garten, oder eine Deko, die sich in beiden Räumen befindet.

So wie ich Dich verstanden habe, Atera, soll der Spieler auch auf der Mauer sein können. In dem Fall würde ich "Auf der Mauer" ebenfalls als Raum implementieren, von dem aus der Spieler in einen der anderen Räume gelangen kann.

Richtungen. Wenn der Spieler in der Straße ist, ist die Mauer im Westen. Außerdem gibt es eine Fassade im Osten, auf die man ebenfalls klettern kann. Vielleicht geht die Straße nach Norden und/oder Süden weiter. Mit "W" sollte der Spieler gesagt bekommen, dass dort eine Mauer ist, vielleicht mit einem Hinweis darauf, dass er darauf klettern kann. Bei "Hoch" sollte ebenfalls eine negative Antwort kommen, oder eine Nachfrage, ob der Spieler auf die Mauer oder die Fassade klettern will. (Diese Antwort sollte aber nicht aussehen wie eine Parserantwort, da der Spieler ja den Befehl zum Klettern explizit eingeben muss. Vielleicht etwas wie "Direkt über dir ist freier Himmel. Du könntest aber auf die Mauer und die Fassade klettern.") Zum Klettern muss also immer "klettere auf x" angegeben werden, die Richtungen geben nur Hinweise darauf.

Genauso im Garten: "O" sagt, dass die Mauer im Weg ist, mit "klettern" kommt man dann auf die Mauer.

Auf der Mauer selbst kann man dann nach Osten oder Westen springen. Oder in den garten und auf die Straße. Hier wäre Eingabevielfalt wünschenswert. Dass man von der Mauer aus nur nach Westen und Osten gehen kann, ist ja leicht zu bewerkstelligen. Nur sollten die anderen Ausgänge eine eigene Antwort anstelle der Standardantwort bekommen.

Befehle. Der Hauptbefehl ist hier wohl klettern, der in seiner Reinform dem Spieler eine Absage erteilt:


    Bef klettern

    Name 'klettern'

    Verb 'klettere'

    Syntax auf dasObj

    Ausf

        Bed (aObj fest)

            'Auf [den aObj] zu klettern ist lächerlich.'

        Text 'Das würde dich nicht wesentlich weiter

            bringen.'

    EndeAusf

Beim Mauerobjekt würde man dann das Klettern abfangfen.


    Deko Mauer

    ...

    Ort Straße Garten

    VorAusf

        (klettern)

        Bed (Bergschuhe angezogen)

            'Du bekommst keinen Halt zwischen den

            brüchigen Steinen.'

        'Mit den Begstiefeln suchst du Halt zwischen

            den Steinen und erklimmst die Mauer.[#]'

        geheZu Auf_der_Mauer

    EndeAusf

(Von einer Zufallschance würde ich absehen und eher eine andere Bedingung einfügen.)

Verfeinerungen. Man könnte jetzt noch von der Mauer aus alle Gegenstände im Garten und auf der Straße mit SichtUndRw sichtbar machen. Und man könnte den Spieler die Mauer nur mit leeren Händen hochklettern lassen und ihm dafür die Möglchkeit geben, Dinge auf die Mauer zu legen, wenn er auf der Straße und im Garten ist. Und natürlich fehlen noch Synonyme zum Klettern.

Also:

  • Orte, die klar räumlich voneinander getrennt sind, als verschiedene Räume implementieren. (Die Verschachtelung von Objekten, die der Spieler betreten kann und SichtUndRw sind eher etwas für Fortgeschrittene, meist kommt man ohne sie aus.)

  • Neue Befehle immer allgemein formulieren (Was passiert, wenn ich den Stein esse? Oder die Betonbrücke schüttele?) und Besonderheiten immer beim Objekt selbst abfangen, auch wenn der Befehl nur auf dieses Objekt zugeschnitten ist.

  • Nie etwas implementieren, das nicht eindeutig ist, wie z.B. "hoch" von der Straße aus als Klettern auf die Fassade interpretieren. Im Zweifelsfall immer nachfragen und auf die voneinander verschiedenen Alternativen hinweisen.

Oh! Mittlerweile hast Du ja eine Lösung gefunden. Sieht gut aus, trotzdem würde ich alles bei den Objekten in der VorAusf abfangen und beim klettern nur die Absage stehen lassen. Das Attribut erkletterbar ist aber gut, denn es hilft beim Disambiguisieren:


> klettere

(auf den Telegrafenmast)

Behende kletterst du auf den Mast.

Atera:

In den Standartantworten gibt es ja auf den Befehl 'untersuche mich' etc. die übliche Antwort 'Du siehst hinreißend aus' blablabla. Ist es möglich diese Antwort zu verändern ohne dass man gleich eine neue Standard-Antworten Datei dafür erstellen muss?

Jein. Ein Alternative ist, den ganzen Block mit Standardantworten in die Spieldatei zu kopieren und das Wort "Standard" davor zu schreiben. Ob das aber einfacher ist, bezweifle ich. (Einzelne Antworten auszutauschen, wie in Inform, ist nicht möglich.)

Zitat:

Und ein zweites Problem, dass ich immer wieder habe, ist, dass beim Betreten des Raumes Objekte mit aufgelistet werden, die ich da eigentlich nicht aufgelistet haben wollte. Beispiel: Hinter einer Kiste steht eine Whiskyflasche. In der Flasche ist Whisky.

Das ist wohl ein Bug in T.A.G. Der Whisky ist eigentlich nicht da, da die Flasche nicht da ist. Hier würde ich den Fehler des Interpreters umgehen, indem ich das Schauen hinter die Kiste anfange:


    Obj Kiste

    ...

    VorAusf

        (schauen)

            wenn (aPräp = 'hinter') dann

                Bed (Flasche in nirgendwo)

                    'Da ist nichts.'

                Text 'Du findest eine Flasche.'

                ObjNach Flasche aRaum

            Ende

    EndeAusf

   

    Obj Flasche

    Ort nirgendwo

    ...

   

    Obj Whisky

    Ort in Flasche

    ...
Geschrieben um 14:59 am 16.07.2003 | Zitat | Editieren | Löschen
zuDaniel
Mitglied
Student Gumby
Beiträge: 32

Da hattest du ja ganz schön viel an mir auszusetzen. :cry: Martin:

Leider ist der Quelltext sehr fehlerhaft. Wieso probierst Du ihn nicht aus, bevor Du ihn postest?

-Ich probiere ihn nicht aus, weil ich nicht bei mir Internet habe, und nicht jederzeit ins Internet kann, d.h. wenn ich ihn testen würde, bräuchte ich 2-3 Tage, um ihn zu posten, und auf dem Internet Pc darf ich keine Daten speichern(ich speichere sie ddirekt auf Disketten) (Mehr wird nicht verraten).

Martin:

In seiner jetzigen Form isr er, besonders für Einsteiger, nicht hilfreich, sondern eher verwirrend.

-Vergiss bitte nicht, ich bin auch ein Einsteiger(Mehr oder weniger).

Martin:

(Ok, ok, ich poste auch öfters Code ins Forum, ohne ihn getestet zu haben, aber ich habe auch schon etwas mehr Erfahrung mit T.A.G. Und ich schaue meistens vorher im Handbuch nach.)

-Erwischt!!! :wink:

Danke fürs zuhören!

Ich entschuldige mich green dafür, das mein (Quell-)Text Falsch war/ist.

Übrigens habe ich den Quelltext jetzt wieder geändert...

Geschrieben um 17:19 am 16.07.2003 | Zitat | Editieren | Löschen
Atera
Mitglied
Baby Gumby
Beiträge: 4

Danke schön erstmal für die vielen Tipps. Auf das mit dem Whisky wäre ich jetzt auf Anhieb (bzw. wahrscheinlich auch nicht nach mehreren Anläufen gekommen ;)) nicht gekommen. Hat mir auf jeden Fall weitergeholfen.

Liebe Grüße

-Atera, die jetzt weiterbastelt (o;

AntwortenNeues ThemaNeue Umfrage
Powered by Spam Board SVN © 2007 - 2021
Impressum / Datenschutz