Autor |
Nachricht |
< Nachträgliches ändern des Special indefinite article |
|
Verfasst am:
Fr, 19 Feb 2010 - 0:55
|
|
|
Wasserträger

Anmeldungsdatum: 25.01.2010
Beiträge: 37
Wohnort: Wien
|
|
Hallo!
Bin heute auf ein Neues Problem gestoßen das ich kurz schildern möchte:
Ich möchte Objekte in meinem Spiel haben, welche, nachdem sie betrachtet wurden, mit dem direkten Artikel angesprochen werden. (dies macht z.B. bei bereits durchschrittenen Türen sinn)
Folgendes Beispiel:
Code: | The Laptop is a male thing. It is in the Library.
The description of the Laptop is "Irgendein Laptop steht in der Ecke.".
After examining the Laptop for the first time:
say "Das ist ja mein Laptop! Wer hat den denn umlackiert?";
now the special indefinite article of the Laptop is DEFINITE ARTICLE;
now the description of the Laptop is "Mein Laptop, schändlich umlackiert, steht in der Ecke.". |
Dieser Code sollte an sich genau das oben beschriebene durchführen, leider kommt dabei folgender Run-time error heraus:
*** Run-time problem P11: Although der Laptop is allowed to have the property "special indefinite article", no value was ever given, so it can't now be used.
Folgendes wird zusätzlich noch angezeigt:
Code: | P12 - Never-set property
Most problems are detected when Inform translates the source text, but this is one of the exceptions, a "run-time problem" which emerges only during play.
It sometimes happens that - although something could in principle have a given property - in fact it doesn't. That makes it impossible to use.
For instance, although every thing is allowed to have a description property, it will only be given one if the source text says so explicitly. That makes writing the description of the noun (say) a little chancy, because it assumes the noun will be a thing which has a description - which might not always be true. If you would like to make sure everything does have a description property, you can always write a sentence like The description of a thing is usually 'Dull.'. |
Das ergibt auch Sinn, das Problem hierbei ist aber, dass es kein "nothing" setting für special indefinite article gibt, womit ein Satz wie Code: | The special indefinite article of a thing is usually "nothing". | nicht funktioniert.
Ich bin für jeden Tipp dankbar.
MfG
Strainer |
|
|
|
 |
|
Verfasst am:
Fr, 19 Feb 2010 - 12:14
|
|
|
Experte

Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
Zitat: | Code: | now the special indefinite article of the Laptop is DEFINITE ARTICLE; |
|
Die Eigenschaft special indefinite article kann in Deinem Beispiel nicht verändert werden, weil sie noch gar nicht vergeben wurde. Und, wie Du richtig beschrieben hat, kann sie nur die Werte des Typs special article annehmen, also DEFINITE ARTICLE, YOURS und NO ARTICLE. Man kann also nicht so einfach eine "leere" Eigenschaft bei der Definition des Objekts vergeben, die dann nachträglich verändert wird. Mit einem I6-Hack ist das aber möglich:
Include (- with special_article, -) when defining the Laptop.
Ein indefinite article kann dann aber nicht mehr verwendet werden, weil dieser von der Eigenschaft special indefinite article überschrieben wird (auch wenn diese NULL ist). Ansonsten müsste alles so laufen, wie Du es möchtest.
Edit: Ich bin mir jetzt gar nicht sicher: Ist das ein Fall, der öfter auftritt? Dann würde es vielleicht Sinn machen, wenn man einen zusätzlichen Wert für den special indefinite article zulassen würde, z.B. PENDING. Der Wert wäre nur Platzhalter und ließe dann (nach entsprechender Änderung der Routine IndefArt() auch einen indefinite article zu -- so lange, bis man dann einen der drei anderen Werte YOURS, DEFINITE ARTICLE oder NO ARTICLE zuweist. Mir mangelt's gerade an Übersicht, deshalb frage ich die Autoren, die derzeit I7/GerX benutzen: Wäre das nützlich? |
|
|
|
 |
|
Verfasst am:
Fr, 19 Feb 2010 - 17:15
|
|
|
Wasserträger

Anmeldungsdatum: 25.01.2010
Beiträge: 37
Wohnort: Wien
|
|
Ich glaube schon das es durchaus nützlich wäre, da es bestimmt Sinn Macht, viele mehrfach benutzte Dinge wie Türen nach einer Weile mit bestimmten Artikeln anzusprechen. ("eine Glastür" macht beim dritten durchschreiten als Bezeichnung einfach wenig Sinn)
Verstehe ich es richtig, dass durch das Attribut "PENDING" wieder der indirekte Artikel zugewiesen würde? Oder wäre PENDING dann nur als Standardattribut und Platzhalter zu verstehen bis schließlich einer der 3 special indefinite article vergeben wird?
Also ich persönlich fände es schon praktisch, habe aber auch kein Problem damit es mit deiner vorher beschriebenen i6 Variante zu machen, hauptsache es klappt.
MfG |
|
|
|
 |
|
Verfasst am:
Fr, 19 Feb 2010 - 17:24
|
|
|
Experte

Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
Strainer hat folgendes geschrieben: | Verstehe ich es richtig, dass durch das Attribut "PENDING" wieder der indirekte Artikel zugewiesen würde? |
PENDING macht gar nichts, außer den special indefinite article für die spätere Änderung bei einem Objekt vorzumerken. Es würde also bei der Ausgabe mit unbestimmten Artikel auch dieser herangezogen werden. Beispiel:
The Buch is a neuter thing in Labor. The special indefinite article of the Buch is PENDING.
After examining the Buch for the first time: now the special indefinite article of the Buch is YOURS; say "Erst jetzt erkennst du, dass dies dein Tagebuch ist."
Mein Testspiel hat folgendes geschrieben: | Labor
Du siehst hier einen Laptop und ein Buch.
>u buch
Du siehst nichts Besonderes an dem Buch.
Erst jetzt erkennst du, dass dies dein Tagebuch ist.
>l
Labor
Du siehst hier einen Laptop und dein Buch.
> |
|
|
|
|
 |
|
Verfasst am:
Fr, 19 Feb 2010 - 18:26
|
|
|
Wasserträger

Anmeldungsdatum: 25.01.2010
Beiträge: 37
Wohnort: Wien
|
|
Um dein Beispiel weiter zu führen:
Würde folgendes funktionieren(auch wenn man es nicht oft brauchen wird):
After giving the Buch to Peter: now the special indefinite article of the Buch is PENDING; say "Du übergibst dein Buch an Peter."
Und die Ausgabe wäre wieder im indirekten Artikel? |
|
|
|
 |
|
Verfasst am:
Fr, 19 Feb 2010 - 18:38
|
|
|
Experte

Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
Ja, ganz genau. Mit PENDING kann man den special indefinite article auch wieder wirkungslos machen.
Edit: Für alle Interessierten gibt es HIER eine Version zum Ausprobieren des PENDING-Werts (der, wie alle anderen Werte auch, je nach Geschmack auch klein geschrieben werden kann; ich bevorzuge jedoch die Schreibweise in Versalien, damit man die Werte besser im Quelltext von anderen Eigenschaften unterscheiden kann).
Edit 2:Ich habe jetzt eine neue Version mit angepasster Kurzdoku hochgeladen, mit der es jetzt möglich ist, den special indefinite article flexibler einzusetzen. Danke an Strainer für den Hinweis. |
|
|
|
 |
|