Forum moved to if-forum.org
Autor Nachricht
<  Problem mit Objektzuweisung
Shot
BeitragVerfasst am: Mi, 22 Apr 2009 - 16:23  Antworten mit Zitat
Neuling
Neuling


Anmeldungsdatum: 20.04.2009
Beiträge: 2
Wohnort: Bonn

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.

Code:
Object -> Treasure "Schatz"
    with
after [;
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.",
      deadflag = 2;
],
name "Truhe" "Schatztruhe" "Schatz"
decription "Eine Schatztruhe aus massivem Eichenholz. Wahrscheinlich ist das vergoldete Schloss an sich schon einiges wert...",
dekl 1,
has male;


Wenn ich das jetzt kompiliere, gibt der Compiler keine Fehlermeldung aus, aber wenn ich z.B. "nehme schatztruhe" eingebe,
sagt der Interpreter "Du kannst nichts der gleichen sehen"
Was mache ich falsch?

Danke schon mal im Voraus^^

EDIT:Ich habs nochmal ausprobiert. Wenn ich "nehme truhe" eingebe
klappt es, aber mit den Begriffen hinter "truhe" (siehe "name") nicht mehr.
_________________
Lache niemals über jemanden, der einen
Schritt zurückgeht, denn er könnte Anlauf nehmen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ChristianB
BeitragVerfasst am: Mi, 22 Apr 2009 - 17:03  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg

Hallo,

Auf den ersten Blick stelle ich folgende Fehler oder Ungenauigkeiten fest:

Vokabeln sollten in einfachen Hochkommas geschrieben werden, also

Code:
name 'truhe' 'schatztruhe' 'schatz',

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.


Zuletzt bearbeitet von ChristianB am Do, 23 Apr 2009 - 9:24, insgesamt 3-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Martin
BeitragVerfasst am: Do, 23 Apr 2009 - 9:06  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 25.08.2002
Beiträge: 677
Wohnort: München

Hmm, also wenn ich das genau so kompiliere, sagt mir Inform:
Code:
line 87: Warning:  'name' property should only contain dictionary words
> decription
line 87: Error:  No such constant as "decription"

Offensichtlich machst Du es also nicht genau so, wie es im Designers' Manual steht. Ich habe den Code leicht modifiziert und dann klappt alles so, wie es wahrscheinlich soll:
Code:

 Object -> Treasure "Schatz"
   with after [;
            Open:
                deadflag = 2;
                "Das Gold in der Truhe überwältigt dich. Dort
                gibt es Diamanten, Ringe, Ketten und andere
                Dinge, die du noch nie zuvor gesehen hast.";
        ],
        name "Truhe" "Schatztruhe" "Schatz",
        description
            "Eine Schatztruhe aus massivem Eichenholz.
            Wahrscheinlich ist das vergoldete Schloss an
            sich schon einiges wert...",
        dekl 1,
    has male openable;

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 InformFAQ.

Außerdem schließt Du die Anweisung "Das Gold ..." mit einem Komma und nicht mit einem Semikolon ab*. Dadurch gehört die Zuweisung auf deadflag zur (impliziten) print_ret-Anweisung, deren Rückgabewert 2 an den text angehängt wird:

Frotz hat folgendes geschrieben:
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


Du solltest hier einen Strichpunkt verwenden, und dann sagt der Compiler auch, dass die Zuweisung von deadflag nie erreicht wird. Warum nicht? Weil ein String stillschweigend als print_ret interpretiert wird und damit quasi ein return true ist.

Alle Codebeispiele mit deadflag im DM4, das Du ja angeblich genau befolgst, machen es so wie in meinem korrigierten Code: erst deadflag setzen, dann einen Text ausgeben.

Schließlich sollte die Truhe openable sein, denn sonst kann man sie nicht öffnen und after, das nur bei Erfolg berücksichtigt wird, wird nie ausgeführt.

Die Vokabeln in name in Gänsefüßchen zu setzen, ist legal, aber leider eine Ausnahme. An allen anderen Stellen (außer bei Verben) müssen Vokabeln in Hochkommas eingeschlossen werden. Ich finde es daher besser, auch in name diese Nomenklatur zu verwenden, obwohl das andere Probleme bereitet. (Übrigens, das DM4 verwendet auch Hochkommas.)



________
* 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:
Code:

    for (i = 1, j = 12 : j > 0 : i++, j--) {
        if (j % 3 == 0) i++, j--;
        print i, " * ", j, " = ", i*j, "^";
    }

Aber in diesem Fall ist das nicht richtig.
_________________
Every silver lining has a cloud.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Shot
BeitragVerfasst am: Di, 5 Mai 2009 - 20:13  Antworten mit Zitat
Neuling
Neuling


Anmeldungsdatum: 20.04.2009
Beiträge: 2
Wohnort: Bonn

Ah, okay. Danke.
Ich habs neu kompiliert, und jetzt klappt's^^
_________________
Lache niemals über jemanden, der einen
Schritt zurückgeht, denn er könnte Anlauf nehmen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Alle Zeiten sind GMT + 1 Stunde (MEZ)

Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Seite 1 von 1
if-de :: Forum Foren-Übersicht  >  Inform & Glulx

Neues Thema eröffnen   Neue Antwort erstellen


 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.



Kontakt: Administrator

Powered by phpBB and NoseBleed v1.05