| Geschrieben um 14:44 am 20.02.2004 | Zitat | Editieren | Löschen | |
Mitglied Master Gumby Beiträge: 98 | Ich habe ein Problem, ich möchte das Spiel im Schlafzimmer beginnen und ich soll schon bei Beginn des Spiels im Bett liegen (und nicht sinnlos im Raum herumstehen obwohl ein sehr gemütliches Bett vorhanden ist). Ich habe jede Menge ausprobiert, aber ich stehe mir beim Start des Spiels immer noch die Beine in den Bauch. |
| Geschrieben um 19:31 am 20.02.2004 | Zitat | Editieren | Löschen | |
Mitglied Pupil Gumby Beiträge: 13 | <td valign="top"><div class="post"><p>Hi,</p> <p>bei deinem Problem kann ich dir helfen, denk ich.</p> <p>“`Aktion Anfang</p> <p>Ausf</p> <p>Text ‘bla bla’</p> <p>…</p> <p>GeheZu eins</p> <p>Ausf liegen_auf bett !! die lösung</p> <p>EndeAusf</p> <p>Raum eins</p> <p>Name ‘eins’</p> <p>Besch ‘Testareal 1’</p> <p>Obj bett</p> <p>Name ‘bett’ n</p> <p>Subst ‘bett’ n</p> <p>Ort eins</p> <p>Attr liege</p> <p>Besch ‘Ein flauschiges Bettchen.’</p> <p>“`</p> <p>So das wars. Damit kann dein Spieler frisch gestärkt den Spieletag beginnen. :-)</p> </div></td> |
| Geschrieben um 20:37 am 20.02.2004 | Zitat | Editieren | Löschen | |
Mitglied Retired Gumby Beiträge: 707 | <td valign="top"><div class="post"><p>Das Liegen birgt einige Tücken. Man kann zwar <strong>gehezu</strong> mit Objekten benutzen, dann bleibt aber die Variable <strong>bSitz</strong> undefiniert. Da <strong>gehezu</strong> auch die Raumbeschreibung ausgibt, muss man <strong>bSitz</strong> vorher setzen:</p> <p>“`</p> <h1>DAT ‘normal.adv’</h1> <p>Aktion Anfang</p> <p>Ausf</p> <p> Text ‘Drrrring! Uuaaah! Was? Schon 9:05 Uhr?[#]</p> <p> [f]D A S E R W A C H E N[n]</p> <p> [x]eine Geschichte für nicht ganz Ausgeschlafene.[#]’</p> <p> sei bSitz %liegen</p> <p> geheZu in dein_Bett</p> <p>EndeAusf</p> <p>Raum dein_Zimmer</p> <p>Name ‘Dein Zimmer in der IF-de-WG’</p> <p>raus dort<em>lauert</em>der_Tod</p> <p>Besch ‘Dies ist dein Zimmer, das du vor einem Jahr in</p> <p> der IF-de-WG bezogen habe. Es ist das “Curses!”-Zimmer,</p> <p> weil du immer so laut fluchen musst, wenn du über das</p> <p> Kabel der Stehlampe stolperst. Das zweite Möbelstück</p> <p> neben der Stehlampe ist dein Bett, das in der Mitte des</p> <p> Zimmers steht, um den Raum größer wirken zu lassen. Es</p> <p> ist nicht das schönste Zimmer, etwas schlampig in Inform</p> <p> impementiert, aber besser als nichts.</p> <p> [[*** Programming Error: Tried to read entry 5 from array</p> <p> “bewohner” which has entries from 0 up to 2. ***]]’</p> <p>Obj dein_Bett</p> <p>Name ‘Bett’ n</p> <p>Subst ‘bett’ n, ‘heia’ f</p> <p>Besch ‘Das Bett hast du von deinem Vormieter, Christoph,</p> <p> übernommen.’</p> <p>Ort dein_Zimmer</p> <p>Attr Sitz Liege fest Ablage in_Obj</p> <p>Weg dort<em>lauert</em>der_Tod</p> <p>Ausf</p> <p> Text ‘[[***Programming Error: Tried to move “wg” into</p> <p> “flur” which is a child of “wg” thus creating an</p> <p> infinite loop. ***]]’</p> <p> gestorben</p> <p>EndeAusf</p> <p>“`</p> <p>Torstens Lösung funktioniert auch, allerdings muss der Spieler bereits im richtigen Raum sein und es wird dann “Du liegst nun in dem Bett” ausgegeben. Daher muss man das Liegen <strong>still</strong> ausführen, und dann die Raumbeschreibung explizit anfordern:</p> <p>“`</p> <p>Aktion Anfang</p> <p>Ausf</p> <p> Text ‘Drrrring! Uuaaah! Was? Schon 9:05 Uhr?[#]</p> <p> [f]D A S E R W A C H E N[n]</p> <p> [x]eine Geschichte für nicht ganz Ausgeschlafene.[#]’</p> <p> setze still</p> <p> gehezu dein_Zimmer</p> <p> Ausf liegen<em>auf dein</em>Bett</p> <p> lösche still</p> <p> Ausf lage</p> <p>EndeAusf</p> <p>“`</p> <p>P.S.: Es kann sein, das das in älteren (sprich uralten) T.A:M.s nicht funktioniert. Dann bitte die neueste T.A.M. verwenden. Danke.</p> </div></td> |
| Geschrieben um 12:14 am 23.02.2004 | Zitat | Editieren | Löschen | |
Mitglied Master Gumby Beiträge: 98 | Klasse, hat mir geholfen Danke. Habe aber die 2 Lösungen kombinieren müssen, da bei Martins Lösung die DOS-Tam vor der Raumbeschreibung die Zahlenfolge “1, 1” ausgibt, sowie angibt daß der Spieler auf dem Bett liegt, was nicht vonnöten ist, da sich schon aus der Beschreibung des Raumes ergibt, daß der Spieler liegt. Meine Lösung im folgenden: “` … Sei bSitz %liegen GeheZu Schlafzimmer Ausf liegen_auf Bett … “` Diese Version bringt in der DOS-Tam sowie in der Windows-Tam das gewünschte Ergebnis. |
| Geschrieben um 13:17 am 06.06.2004 | Zitat | Editieren | Löschen | |
Mitglied Pupil Gumby Beiträge: 12 | Bisher hat es zwar gereicht, still und heimlich mitzulesen, aber jetzt muss ich doch auch mal ne Frage stellen. Die Lösungen bedeuten ja, den Spieler AUF das Bett zu legen, aber nicht IN das Bett. Lediglich Martin’s Lösung legt den Spieler direkt in das Bett, erzeugt aber bekanntermaßen 1, 1 vor der Ausgabe. Lässt sich das umgehen oder gibt es noch eine andere Möglichkeit, den Spieler zu Beginn in ein Objekt zu legen? Und lässt sich “lege auf” und “lege in” trennen? Wenn man mit Martins Code arbeitet, kann ich nichts mehr auf das Bett legen, sondern es wird automatisch in das Bett gelegt. Ist es möglich, etwas in das Bett zu legen und etwas darauf legen zu können? (ist als Ablage und Behälter definiert) |
| Geschrieben um 13:21 am 07.06.2004 | Zitat | Editieren | Löschen | |
Mitglied Prof Gumby Beiträge: 569 | <td valign="top"><div class="post"><p><strong>Nadine:</strong></p> <blockquote> <p>Und lässt sich “lege auf” und “lege in” trennen? </p> </blockquote> <p>Ich habe mir ein Bett gebaut, in das man sich hinein- oder draufLEGEN kann; man kann sich aber auch hinein- oder draufSETZEN. Ebenso können Dinge darauf abgelegt und/oder hineingelegt werden (z.B. das Tablett AUF das Bett und die Giftschlange IN das Bett!).</p> <p>“`Obj Bett</p> <p>Name ‘Bett’ n</p> <p>Subst ‘bett’ n ‘poofe’ f ‘heia’ f</p> <p>Ort Wohnzimmer</p> <p>Attr immobil Sitz Ablage Behälter Liege In_Obj</p> <p>Besch ‘Ein selbst gezimmertes Bett aus echtem Regenwald-Teakholz.’</p> <p>VorAusf</p> <p> (sitzen<em>auf liegen</em>auf)</p> <p> Wenn (aPräp = ‘auf’) dann</p> <p> AttrWeg selbst In_Obj</p> <p> Ende</p> <p> Wenn (aPräp = ‘in’) dann</p> <p> AttrHin selbst In_Obj</p> <p> Ende</p> <p>EndeAusf“`</p> </div></td> |
| Geschrieben um 17:43 am 08.06.2004 | Zitat | Editieren | Löschen | |
Mitglied Prof Gumby Beiträge: 569 | <td valign="top"><div class="post"><p>**Noch mal zum ursprünglichen Thema: **Wenn man den Spieler in einem Bett aufwachen lassen will, ohne dass er erkennen kann, in welchem Raum er sich befindet (und ohne dass er irgendwelche Objekte außer denen im Bett manipulieren kann), könnte man das Bett doch auch als Raum deklarieren. Nach dem Aufstehen wird dieser Raum dann nie wieder betreten, denn nach dem Aufstehen würde man sich wie gehabt in (oder auf) das Objekt “Bett legen. Natürlich müssen mit dem Aufstehen eventuell im Raum “Im_Bett zurückgelassene Objekte in (oder auf) das Objekt “Bett” gelegt werden.</p> <p>Das ist vielleicht nicht ganz elegant, aber die Eleganz könnte doch auch mal dem Effekt Platz machen.</p> <p>Beispiel für einen Startraum Im_Bett:</p> <p>“` Raum Im_Bett</p> <p>Name ‘Im Bett’</p> <p>Besch ‘Du liegst in einem Bett. Wo du genau bist, kannst du nicht erkennen.’</p> <p>VorAusf</p> <p> (aufstehen)</p> <p> Text ‘Langsam rappelst du dich hoch. Jetzt kannst du auch</p> <p> sehen, dass du dich in deinem Wohnzimmer befindest. Warum das</p> <p> Bett in deinem Wohnzimmer steht, kannst du dir beim besten</p> <p> Willen nicht erklären.[#]’</p> <p> Schleife xObj</p> <p> Wenn (xObj hier) und /(xObj beiMir) dann</p> <p> ObjNach xObj in Bett ! oder “auf Bett”</p> <p> Ende</p> <p> Ende</p> <p> GeheZu Wohnzimmer</p> <p> Stop</p> <p>EndeAusf “`</p> </div></td> |
| Geschrieben um 13:28 am 11.06.2004 | Zitat | Editieren | Löschen | |
Mitglied Retired Gumby Beiträge: 707 | <td valign="top"><div class="post"><p><strong>Zitat:</strong></p> <blockquote> <p>Lediglich Martin’s Lösung legt den Spieler direkt in das Bett, erzeugt aber bekanntermaßen 1, 1 vor der Ausgabe.</p> </blockquote> <p>Also, die DOS-T.A.M. vom 06.03.2003, die auch im aktuellen Paket enthalten ist, erzeugt bei mir kein “1, 1”. Bitte aktualisieren!</p> <p><strong>Zitat:</strong></p> <blockquote> <p>Und lässt sich “lege auf” und “lege in” trennen? Wenn man mit Martins Code arbeitet, kann ich nichts mehr auf das Bett legen, sondern es wird automatisch in das Bett gelegt. Ist es möglich, etwas in das Bett zu legen und etwas darauf legen zu können? (ist als Ablage und Behälter definiert)</p> </blockquote> <p>Wenn ich das Spiel oben kompiliere, kann ich nur Dinge auf das Bett legen, das Hineinlegen wird mit “Das Bett ist keine Ablage” quittiert. Wenn ich zusätzlich das Attribut <strong>Ablage</strong> definiere, kann man Dinge ins Bett legen, aber der Ablage- und der Behälterteil des Betts werden getrennt: “Auf dem Bett siehst du eine alte Zeitung und drei Äpfel. In dem Bett siehst du einen Kompass.”</p> <p>In diesem Fall will man wohl eher, dass “lege Ball ins Bett” und “lege Ball aufs Bett” dasselbe bedeuten. Ein einfaches Umleiten von <strong>hineinlegen</strong> in <strong>darauflegen</strong> funktioniert nicht, aber mit dem folgenden Code haut’s hin:</p> <p>“`</p> <p> Obj dein_Bett</p> <p> …</p> <p> VorAusf</p> <p> (empfangen) sei aPräp ‘auf’</p> <p> EndeAusf</p> <p> Attr Sitz Liege fest Ablage in_Obj</p> <p>“`</p> </div></td> |
| Geschrieben um 16:52 am 15.07.2004 | Zitat | Editieren | Löschen | |
Mitglied Master Gumby Beiträge: 103 | <td valign="top"><div class="post"><p>Ich habe auch vor, den Spieler ins Bett zu legen, aber nur, wenn er einen Befehl eingibt.</p> <p>Wie mache ich das denn?</p> <p>“`Bef Hokuspokus</p> <p>Name ‘zaubern’</p> <p>Verb ‘hokuspokus’</p> <p>Ausf</p> <p> geheZu in Bett</p> <p>EndeAusf“`</p> <p>In etwa so? Oder wie? Wie ist das mit dem Liegen?</p> </div></td> |
| Geschrieben um 17:08 am 15.07.2004 | Zitat | Editieren | Löschen | |
Mitglied Retired Gumby Beiträge: 707 | Zitat:
Ja, genau. Vermutlich so. Hast du den Code nicht ausprobiert, bevor du uns im Forum fragst? Ruhig deine Idee mal kompilieren uns sehen, ob’s klappt - viel passieren kann ja nicht. (Ein hängengebliebenes DOS-Fenster ist bei mir nicht “viel”. ;-) Zitat:
Die Antwort hierzu* haben die Forums-Benutzer auf dieser Seite versteckt. Findest du sie? *) sei bSitz %liegen |
| Geschrieben um 18:29 am 15.07.2004 | Zitat | Editieren | Löschen | |
Mitglied Master Gumby Beiträge: 103 | <td valign="top"><div class="post"><p>Das heißt, es geht folgendermaßen?</p> <p>“`Bef Hokuspokus</p> <p>Name ‘zaubern’</p> <p>Verb ‘hokuspokus’</p> <p>Ausf</p> <p> geheZu in Bett</p> <p> sei bSitz %liegen</p> <p>EndeAusf“`</p> <p>Wie ist es denn mit</p> <p>“`Ausf</p> <p>[…]</p> <p> Ausf liegen_auf bett</p> <p>[…]</p> <p>EndeAusf“`</p> </div></td> |
| Geschrieben um 23:43 am 15.07.2004 | Zitat | Editieren | Löschen | |
Mitglied Retired Gumby Beiträge: 707 | <td valign="top"><div class="post"><p><strong>Zitat:</strong></p> <blockquote> <p>Das heißt, es geht folgendermaßen?</p> </blockquote> <p>Nochmal: Die beste Möglichkeit, zu überprüfen, ob Code funktioniert, ist ihn tatsächlich zu erzeugen und auszuprobieren. Das geht leicht und bringt auch das ein oder andere Erfolgserlebnis, probier’s aus!</p> <p>Wenn dann etwas nicht klappt, kann man den Code immer noch hier posten und die Forenbenutzer um Rat fragen. (Es besser zu wissen als andere ist immer schön, den Code für andere zu schreiben, weniger. :-)</p> <p>Dein Code ist fast korrekt, du musst die Variable <strong>bsitz</strong> vor der Anweisung <strong>gehezu</strong> definieren, da in dieser die Raumbeschreibung ausgegeben wird, und dann muss bekannt sein, ob der Spieler auf dem Bett liegt, sitzt oder steht.</p> <p>“`</p> <p>Ausf</p> <p> sei bSitz %liegen</p> <p> geheZu in Bett</p> <p>EndeAusf</p> <p>“`</p> <p>Dein zweiter Code funktioniert nur, wenn das Bett zum Zeitpunkt des Zauberns sichtbar ist. Vorsicht! Da dies nicht überprüft wird, wenn du <strong>Ausf</strong> benutzt - die gesamte Überprüfung wird vom Parser vorgenommen - ist dieser Code recht gefährlich und macht eventuell das Spiel kaputt: Der Spieler kann dann auf dem Bett liegen, obwohl er immer noch im Garten ist, wo das Bett nicht steht. Die Meldung heißt dann er liege im Bett, der Spieler kann aber das Bett nicht sehen. Aus dieser Situation kommt man nicht so leicht wieder heraus, also Obacht.</p> <p>Außerdem schreibt die zewite Möglichkeit etwas wie “Du hast dich ins Bett gelegt.”, was bei einem Zauberspruch (oder was auch immer) sicher nicht gewünscht ist.</p> </div></td> |