Geschrieben um 19:33 am 14.05.2003 | Zitat | Editieren | Löschen | |
Mitglied Pupil Gumby Beiträge: 11 | Hallo, kann mir jemand helfen. Ich versuche gerade eine Tischdecke zu schaffen, die auf einem Tisch liegt. Diese soll man erst nehmen können, wenn anderen Objekte von Ihr runter genommen worden sind. In diesem Fall steht eine Object 'Vase' auf der Decke. Ich habs mal versucht, aber diese Bespiel landet immer im ELSE-Zweig und nimmt trotz rfalse die Sachen trotzdem.
mfg Thomas |
Geschrieben um 20:08 am 14.05.2003 | Zitat | Editieren | Löschen | |
Mitglied Baby Gumby Beiträge: 9 | Ich versuch mal eine Antwort, auch wenn ich noch nicht so fit in Inform bin. Mabruck:
Ich glaube, es müßte if(vase in self) heißen, oder? (vase in e_tisch) testet nur ob die Vase direkt auf dem Tisch steht. soquasi |
Geschrieben um 09:03 am 15.05.2003 | Zitat | Editieren | Löschen | |
![]() Mitglied Prof Gumby Beiträge: 634 | soquasi:
Stimmt, mit "in" wird nur geprüft, ob ein Objekt direkt in oder auf einem anderen ist. Mit (children(self)) oder (child(self)) kann man prüfen, ob sich überhaupt etwas auf der Tischdecke befindet. Der Code überprüft, ob die Tischdecke genommen werden kann, in react_before. Das ist falsch, da so das Aufheben aller Objekte im Raum - auch der Vase - unterbunden wird. Man könnte das zwar mit
verhindern, aber besser ist es, den Code in before zu packen, das sowieso nur aufgerufen wird, wenn noun die Tischdecke ist. Außerdem ist es ungeschickt, das Nehmen der Tischdecke mit move beim Objekt zu implementieren. Besser ist, man lässt dies durch die normale Routine zum Aufheben von Gegenständen erledigen, die auch prüft, ob der Spieler genug Platz bei sich hat. Der Text, der beim Aufheben der Decke geschrieben wird, kann in after angegeben werden. (Der ursprüngliche Code würde bei "nimm Tisch" auch die Decke nehmen, allerdings nur dann, wenn die Vasee nicht auf dem Tisch steht.) Hier also der neue Code, der hoffentlich funktioniert:
(Ich bin ebenfalls kein Inform-Experte und habe den Code nicht ausprobiert.) Wenn das funktioniert, geht es natürlich weiter: Man kann nur Dinge auf die Tischdecke stellen, wenn sie auf dem Tisch oder irgendwo anders ausgebreitet ist. Und wenn die Tischdecke auf dem Tisch liegt, muss PutOn Augsburger_Tageblatt e_tisch umgewandelt werden in PutOn Augsburger_Tageblatt t_decke. Was ist, wenn die Decke gefaltet auf dem Tisch liegt? Viel Spaß! |
Geschrieben um 09:13 am 15.05.2003 | Zitat | Editieren | Löschen | |
Gast | Super, das wars. und ich hab bestimmt ne Woche dran rumgebastelt. Zitat: Wenn das funktioniert, geht es natürlich weiter: Man kann nur Dinge auf die Tischdecke stellen, wenn sie auf dem Tisch oder irgendwo anders ausgebreitet ist. Und wenn die Tischdecke auf dem Tisch liegt, muss PutOn Augsburger_Tageblatt e_tisch umgewandelt werden in PutOn Augsburger_Tageblatt t_decke. Was ist, wenn die Decke gefaltet auf dem Tisch liegt? Das sind gute Ansätze. Ich werds mal versuchen ob die Programmiert kriege. Thomas |