Geschrieben um 21:26 am 08.04.2010 | Zitat | Editieren | Löschen | |
Mitglied Bachelor Gumby Beiträge: 40 | Hallo zusammen, in den Ferien kann ich immer mal ein wenig daran arbeiten, von TAG auf inform 6 umzustellen, vor allem, weil es Möglichkeiten bietet, die bei TAG (noch) nicht entdeckt habe. Jedoch stoße ich immer wieder an Grenzen, vielleicht weil ich im Programmier-Englisch nicht so bewandert bin und IBG und DM4 nur schleppend durcharbeite. Meine Frage, die ich so weder im Forum noch in den Tutorial-Adventures noch im DM4 beantwortet finde: Kann man wie in TAG "Wege" definieren, also Objekte, die den Player je nach eingegebener Richtung zu dem einen oder dem anderen Raum-Objekt transportieren UND dabei einen Text ausgeben? Etwa so: Zitat: WALDRAND Du stehst am Rand des Schattenwalds. Ein Weg führt nach Norden hinein.
Vorsichtig folgst du dem Pfad und fragst dich, ob die vielfältigen Geräusche nur natürlichen Ursprungs sind... Nach einer halben Stunde gelangst du an eine Lichtung LICHTUNG Du stehst auf einer Waldlichtung. In der Mitte befindet ich ein Haus aus Lebkuchen.
Objekte mit dem door-Attribut und den entsprechenden Properties leisten den Transport, aber die Routine mit der Fallunterscheidung bei door_dir und door_to kann offenbar nur Variablen zurückgeben (return n_to) aber keine Texte ausgeben (print "Du gehst vorsichtig durch den Wald nach Norden."). Wenn in dieser Fallunterscheidung die Location mittels "move player to lichtung" zu ändern, wird erstens die Raumbeschreibung unterschlagen und zweitens ist keine weitere Bewegung von der Lichtung möglich, weil diese offenbar als Sitzfläche o.ä. angesehen wird ("Solange du noch in der Lichtung bist, kannst du nicht nach Osten gehen...") Wenn ich versuche, das Problem über eine Routine bei der Richtungsangabe in der Objektdefinition von WALDRAND zu lösen, werden für mich nicht verständliche Zahlenwerte (-15336 oder so ähnlich) ausgegeben. Ich glaube, was mir fehlt, ist eine Möglichkeit, die gewählte Richtung als Variable an das nächste Objekt (was ich als "Weg" bezeichne) zu übergeben. Gibt es eine globale Variable (analog aRitg bei TAG) , auf der die Richtung steht? Es wär schön, wenn mir jemand helfen könnte. Bis dahin wird der halbstündige Weg durch den Wald halt recht kurz angehandelt. Schöne Grüße, Christof |
Geschrieben um 22:12 am 08.04.2010 | Zitat | Editieren | Löschen | |
Mitglied Master Gumby Beiträge: 107 | Hallo erstmal... :-) Ich habe dein Problem in meinem Textadventure folgendermaßen gelöst: 1) der Ausgangsraum bekommt über den Kompass den Zielraum zugewiesen (in deinem Fall im "Object Waldrand" ein "n_to Lichtung" 2) der Zielraum bekommt über after bei Go mit dem noun n_obj de Text zugewiesen, den du vor der Raumbeschreibung haben willst (also "Object Lichtung": after [; Go: if (noun == n_obj) print "Vorsichtig folgst du...";] Beim Zielraum ist das Print wichtig, da sonst die Raumbeschreibung unterdrückt wird. |
Geschrieben um 23:55 am 08.04.2010 | Zitat | Editieren | Löschen | |
Mitglied Retired Gumby Beiträge: 1062 | Hallo! Du könntest auch beim Ausgangsraum die Richtung als Routine definieren, was dem Weg-Konzept aus T.A.G. ähnelt. Inform 6 ist schmerzfrei was Datentypen angeht:
Wichtig ist, dass die Routine den Zielraum zurückgibt. |
Geschrieben um 16:24 am 09.04.2010 | Zitat | Editieren | Löschen | |
Mitglied Bachelor Gumby Beiträge: 40 | Vielen Dank euch beiden! Ich werde die Tipps gleich mal ausprobieren, der Sicherheit halber beide. Christians Lösung scheint mir einfacher zu sein, aber die andere Methode ist mglw. in anderem Kontext angebracht. Ich bin ja noch in der Test- und Übungsphase... Tatsächlich hatte ich den Unterschied von n_to und n_obj zwar verstanden, aber noch nicht aktiv auf dem Zettel und immer eine falsche Bedingung in meiner Fallunterscheidung. Nochmals danke und schöne Grüße! Christof PS: Gibt es nun eine Variable, auf der die aktuelle Richtung (evtl. auch über die Go-Aktion hinaus) abgelegt wird, oder ist das immer noun? |
Geschrieben um 16:50 am 09.04.2010 | Zitat | Editieren | Löschen | |
Mitglied Retired Gumby Beiträge: 1062 | C++:
Eine Richtungsvariable wie aRitg in T.A.G. gibt es in Inform nicht. Wenn der Spieler schreibt >gehe nach norden ist das erste Objekt des Satzes (noun) der Norden (n_obj). Wenn Du diese Information auch nach dem aktuellen Zug noch brauchst, musst Du die Richtung in einer Variable hinterlegen. Eine Möglichkeit wäre Folgendes:
|