| Geschrieben um 17:23 am 22.04.2009 | Zitat | Editieren | Löschen | |
Mitglied Baby Gumby Beiträge: 2 | <td valign="top"><div class="post"><p>Ich habe Inform erst seit einigen Wochen, und obwohl ich alles genau so mache wie es in Designer’s Manual steht, klappen die Objektzuweisungen nicht richtig.</p> <p>“`Object -> Treasure “Schatz”</p> <p> with</p> <p>after [;</p> <p>Open: “Das Gold in der Truhe überwältigt dich. Dort gibt es Diamanten, Ringe, Ketten und andere Dinge, die du noch nie zuvor gesehen hast.”,</p> <p> deadflag = 2;</p> <p>],</p> <p>name “Truhe” “Schatztruhe” “Schatz”</p> <p>decription “Eine Schatztruhe aus massivem Eichenholz. Wahrscheinlich ist das vergoldete Schloss an sich schon einiges wert…”,</p> <p>dekl 1,</p> <p>has male;“`</p> <p>Wenn ich das jetzt kompiliere, gibt der Compiler keine Fehlermeldung aus, aber wenn ich z.B. “nehme schatztruhe” eingebe,</p> <p>sagt der Interpreter “Du kannst nichts der gleichen sehen”</p> <p>Was mache ich falsch?</p> <p>Danke schon mal im Voraus^^</p> <p>EDIT:Ich habs nochmal ausprobiert. Wenn ich “nehme truhe” eingebe</p> <p>klappt es, aber mit den Begriffen hinter “truhe” (siehe “name”) nicht mehr.</p> </div></td> |
| Geschrieben um 18:03 am 22.04.2009 | Zitat | Editieren | Löschen | |
Mitglied Prof Gumby Beiträge: 569 | Hallo, Auf den ersten Blick stelle ich folgende Fehler oder Ungenauigkeiten fest: Vokabeln sollten in einfachen Hochkommas geschrieben werden, also
Vielleicht geht das auch mit doppelten Hochkommas, das wird aber im DM4 nicht so beschrieben. Dann hast du nach der name-Property das Komma vergessen und zudem “decription” anstatt “description” geschrieben. Letzteres verursacht keinen Fehler, aber das Objekt hat dann eben keine Beschreibung, die Inform ausgibt. Viel Erfolg! Edit: Als ich “dekl 1” sah, vermutete ich, dass die ofizielle Lib verwendet wird. Aber das kann man auch in deform verwenden, was ich allerdings noch nie getan habe, da ich die einfache Lösung mit den Low-Strings vorziehe. |
| Geschrieben um 10:06 am 23.04.2009 | Zitat | Editieren | Löschen | |
Mitglied Retired Gumby Beiträge: 707 | <td valign="top"><div class="post"><p>Hmm, also wenn ich das genau so kompiliere, sagt mir Inform:</p> <p>“`line 87: Warning: ‘name’ property should only contain dictionary words</p> <blockquote> <p>decription</p> </blockquote> <p>line 87: Error: No such constant as “decription”</p> <p>“`</p> <p>Offensichtlich machst Du es also nicht <em>genau so</em>, wie es im Designers’ Manual steht. Ich habe den Code leicht modifiziert und dann klappt alles so, wie es wahrscheinlich soll:</p> <p>“`</p> <p> Object -> Treasure “Schatz”</p> <p> with after [;</p> <p> Open:</p> <p> deadflag = 2;</p> <p> “Das Gold in der Truhe überwältigt dich. Dort</p> <p> gibt es Diamanten, Ringe, Ketten und andere</p> <p> Dinge, die du noch nie zuvor gesehen hast.”;</p> <p> ],</p> <p> name “Truhe” “Schatztruhe” “Schatz”,</p> <p> description</p> <p> “Eine Schatztruhe aus massivem Eichenholz.</p> <p> Wahrscheinlich ist das vergoldete Schloss an</p> <p> sich schon einiges wert…”,</p> <p> dekl 1,</p> <p> has male openable;</p> <p>“`</p> <p>Wie Christian schon geschrieben hat, solltest Du alle Eigenschaften mit einem Komma abschließen. Inform verwendet Kommas und Strichpunkte leider sehr, äh, eigenartig und ist sehr pingelig. Eine Übersicht darüber, wo ein Komma, wo ein Strichpunkt und wo gar nichts hinkommt, bietet das <a href="http://www.firthworks.com/roger/informfaq/ll.html#4">InformFAQ</a>.</p> <p>Außerdem schließt Du die Anweisung “Das Gold …” mit einem Komma und nicht mit einem Semikolon ab*. Dadurch gehört die Zuweisung auf <strong>deadflag</strong> zur (impliziten) <strong>print_ret</strong>-Anweisung, deren Rückgabewert 2 an den text angehängt wird:</p> <p><strong>Frotz:</strong></p> <blockquote> <p>Das Gold in der Truhe überwältigt dich. Dort gibt es Diamanten, Ringe, Ketten und andere Dinge, die du noch nie zuvor gesehen hast.2</p> </blockquote> <p>Du solltest hier einen Strichpunkt verwenden, und dann sagt der Compiler auch, dass die Zuweisung von <strong>deadflag</strong> nie erreicht wird. Warum nicht? Weil ein String stillschweigend als <strong>print_ret</strong> interpretiert wird und damit quasi ein <strong>return true</strong> ist.</p> <p>Alle Codebeispiele mit <strong>deadflag</strong> im DM4, das Du ja angeblich genau befolgst, machen es so wie in meinem korrigierten Code: erst <strong>deadflag</strong> setzen, dann einen Text ausgeben.</p> <p>Schließlich sollte die Truhe <strong>openable</strong> sein, denn sonst kann man sie nicht öffnen und <strong>after</strong>, das nur bei Erfolg berücksichtigt wird, wird nie ausgeführt.</p> <p>Die Vokabeln in <strong>name</strong> in Gänsefüßchen zu setzen, ist legal, aber leider eine Ausnahme. An allen anderen Stellen (außer bei <strong>Verb</strong>en) müssen Vokabeln in Hochkommas eingeschlossen werden. Ich finde es daher besser, auch in <strong>name</strong> <a href="http://www.firthworks.com/roger/informfaq/ll.html#5">diese Nomenklatur</a> zu verwenden, obwohl das <a href="http://forum.ifzentrale.de/viewtopic.php?p=5243#5243">andere Probleme</a> bereitet. (Übrigens, das DM4 verwendet auch Hochkommas.)</p> <hr /> <ul> <li>Man kann mehrere Anweisungen auch mit Kommas anstatt mit Semikolons abtrennen. Das wird zum Beispiel verwendet, um mehrere Anweisungen in einem der drei Bereiche einer for-Schleife unterzubringen oder um sich die geschweiften Klammern zu sparen:</li> </ul> <p>“`</p> <p> for (i = 1, j = 12 : j > 0 : i++, j—) {</p> <p> if (j % 3 == 0) i++, j—;</p> <p> print i, ” * “, j, ” = “, i*j, “^”;</p> <p> }</p> <p>“`</p> <p>Aber in diesem Fall ist das nicht richtig.</p> </div></td> |
| Geschrieben um 21:13 am 05.05.2009 | Zitat | Editieren | Löschen | |
Mitglied Baby Gumby Beiträge: 2 | Ah, okay. Danke. Ich habs neu kompiliert, und jetzt klappt’s^^ |