Autor |
Nachricht |
< TADS auch in deutsch? |
|
Verfasst am:
Mi, 11 Dez 2002 - 10:06
|
|
|
Kompassleser
Anmeldungsdatum: 14.09.2002
Beiträge: 158
Wohnort: OÖ
|
|
Chris hat folgendes geschrieben: | Am Parser kann man leider nicht so viel schrauben; die deutschen Fälle abzudecken (z.B. "nimm den sattel DES pferdES") ist ziemlich schwierig. Die Engländer haben es da schon besser. ;) Da muss man sich wohl auf das Wesentliche beschränken. |
Geht das nicht doch? "nimm den sattel des pferdes": "den" und "des" bei den Artikeln mitdefinieren, und bei dem objekt "pferd" auch die Formen der anderen Fälle bei den Synonymen angeben. Ich habe mich damals bei meinem ersten Versuch auch auf das Wesentliche beschränkt, jetzt von der Sicht des Spielers her finde ich das aber auch nicht mehr so toll, und baue es jetzt aus.
Zoltan |
|
|
|
|
|
Verfasst am:
Mi, 11 Dez 2002 - 10:27
|
|
|
Abenteurer
Anmeldungsdatum: 26.08.2002
Beiträge: 238
|
|
|
|
|
|
|
Verfasst am:
Mi, 11 Dez 2002 - 11:06
|
|
|
Kompassleser
Anmeldungsdatum: 25.08.2002
Beiträge: 142
|
|
Zoltan hat folgendes geschrieben: | Chris hat folgendes geschrieben: | Am Parser kann man leider nicht so viel schrauben; die deutschen Fälle abzudecken (z.B. "nimm den sattel DES pferdES") ist ziemlich schwierig. Die Engländer haben es da schon besser. ;) Da muss man sich wohl auf das Wesentliche beschränken. |
Geht das nicht doch? "nimm den sattel des pferdes": "den" und "des" bei den Artikeln mitdefinieren, und bei dem objekt "pferd" auch die Formen der anderen Fälle bei den Synonymen angeben. |
Ich sehe da auch kein wirkliches Problem. Man kann ja hübsch kompliziert wirkende Noun Phrases erzeugen, wenn man Objekten ausschließlich Adjektive zuweist*, "take the apple which is in the bowl" zum Beispiel -- vielleicht automatisiert durch eine Erweiterung von object.moveInto(), die das Vokabular eines Objekts bei location-Wechsel auf den neuesten Stand bringt.
Was den Sattel des Pferdes betrifft, würde ich es ähnlich angehen. Will sagen, der Parser muß gar nicht erst "des Pferdes" grammatikalisch aufdröseln, sondern liest "Sattel des Pferdes" (oder "Maske des Zorro") einfach als Kette von (TADS-, nicht grammatisch "richtigen") Adjektiven.
Oh Gott, ich muß aufhören, zu faseln
*warum, weiß ich inzwischen nicht mehr, aber mein Ditch Day Drifter ist voll mit solchen Experimenten.. |
|
|
|
|
|
Verfasst am:
Mi, 11 Dez 2002 - 15:58
|
|
|
Administrator
Anmeldungsdatum: 25.08.2002
Beiträge: 303
Wohnort: Berlin
|
|
Noch ein wenig Haarspalterei von meiner Seite.
Eine möglichst korrekte deutsche Grammatik sollte allein schon deswegen verstanden werden, weil sie oft zur Unterscheidung mehrerer Bedeutungen notwendig ist.
Ein - zugegeben recht konstruiertes - Beispiel:
Code: | > schau
Dein Pferd steht hier. Es ist mit dem wunderschönen Sattel deines besten Freundes gesattelt. Auf einem Tisch liegt der Sattel, dem du deinem Pferd zu seinem letzten Sieg beim Derby geschenkt hast.
> nimm sattel des pferdes
Du nimmst den Sattel vom Tisch.
> nimm sattel vom pferd
Du löst die Halterung und nimmst den Sattel deines Freundes. |
_________________ d-frag.de - Ein oder zwei Dinge, die wir über Spiele wissen. |
|
|
|
|
|
Verfasst am:
Mi, 11 Dez 2002 - 18:15
|
|
|
Kompassleser
Anmeldungsdatum: 14.09.2002
Beiträge: 158
Wohnort: OÖ
|
|
Mo hat folgendes geschrieben: |
Ein - zugegeben recht konstruiertes - Beispiel:...
|
Hmm, könnte man das im Ernstfall nicht so machen, dass die beiden Sattel noch etwas anderes als der Besitzer unterscheidet, zB alt-neu, andere Farbe (haben Sattel verschiedene Farben? Ich bin kein Experte auf diesem Gebiet...), etc? |
|
|
|
|
|
Verfasst am:
Mi, 11 Dez 2002 - 20:16
|
|
|
Administrator
Anmeldungsdatum: 25.08.2002
Beiträge: 303
Wohnort: Berlin
|
|
Zoltan hat folgendes geschrieben: | Hmm, könnte man das im Ernstfall nicht so machen, dass die beiden Sattel noch etwas anderes als der Besitzer unterscheidet |
Natürlich ginge das. Ich wollte aber demonstrieren, dass man eben nicht einfach so einen Kasus durch einen anderen ersetzen kann.
Nun kenne ich TADS 3 kein bisschen - aber eine aktuelle deutsche Übersetzung davon, die den Genitiv nicht berücksichtigt, empfände ich als sehr großen Rückschritt. _________________ d-frag.de - Ein oder zwei Dinge, die wir über Spiele wissen. |
|
|
|
|
|
Verfasst am:
Mi, 11 Dez 2002 - 22:59
|
|
|
Kompassleser
Anmeldungsdatum: 14.09.2002
Beiträge: 158
Wohnort: OÖ
|
|
Mo hat folgendes geschrieben: | Noch ein wenig Haarspalterei von meiner Seite.
Eine möglichst korrekte deutsche Grammatik sollte allein schon deswegen verstanden werden, weil sie oft zur Unterscheidung mehrerer Bedeutungen notwendig ist.
Ein - zugegeben recht konstruiertes - Beispiel:
Code: | > schau
Dein Pferd steht hier. Es ist mit dem wunderschönen Sattel deines besten Freundes gesattelt. Auf einem Tisch liegt der Sattel, dem du deinem Pferd zu seinem letzten Sieg beim Derby geschenkt hast.
> nimm sattel des pferdes
Du nimmst den Sattel vom Tisch.
> nimm sattel vom pferd
Du löst die Halterung und nimmst den Sattel deines Freundes. |
|
Ok, das müsste so doch ganz normal gehen:
Man definiert noch zusätzlich zum Verb "nimm", das ein Objekt entgegennimmt, das verb "nimm vom" (so wie "take of"), welches ein direktes und ein indirektes Objekt entgegennimmt. Der Sattel des Freundes kann nur als (in?)direktes Objekt vom Pferdobjekt genommen werden, der des Pferdes als direktes - vielleicht hier als Adjektiv "pferdes" definieren? Ohne das jetzt direkt zu coden, tu ich mir ein bisschen schwer, aber es müsste auf jeden Fall gehen - es geht ja im Englischen auch. |
|
|
|
|
|
Verfasst am:
Do, 12 Dez 2002 - 1:39
|
|
|
Kompassleser
Anmeldungsdatum: 25.08.2002
Beiträge: 142
|
|
Genau. Bei "nimm den Sattel des Pferdes" gibt es im Grunde doch eh kein indirektes Objekt im TADS-Sinne, sondern nur ein dobj, nämlich den Sattel des Pferdes. Und "nimm den Sattel vom Pferd" ist schlichtweg eine Übersetzung des in adv.t implementierten "take <x> from <y>". Man müßte nur darauf achten, daß "Sattel vom Pferd" nicht als (wenig elegante) Bezeichnung des dem Pferd "gehörenden" Sattels mißverstanden werden kann, oder im Zweifelsfalle zugunsten der einen oder anderen Interpretation entscheiden. |
|
|
|
|
|
Verfasst am:
So, 15 Dez 2002 - 11:52
|
|
|
Kompassleser
Anmeldungsdatum: 14.09.2002
Beiträge: 158
Wohnort: OÖ
|
|
Ich hab mich mal an Mos Beispiel versucht. An sich ist die Übersetzung natürlich
nicht komplett, ich habe für das Bsp hier nur das Nötigste übersetzt.
Bei dem Sattel des Pferdes (auf dem Tisch) rührt die Verteilung der Tads Nouns
und Adjectives daher, dass bei "des pferdes sattel" 'Sattel' das Noun und 'des
Pferdes' Adjektive sind, bei "sattel des pferdes" 'pferdes' das Noun und 'sattel des'
Adjektive. Obwohl "des pferdes sattel" wahrscheinlich eh schon nicht mehr
gebräuchlich ist...
Code: |
#include <adv.t>
#include <std.t>
//ÄNDERUNGEN IN DEN STD-BIBLIOTHEKEN
modify takeVerb
verb = 'nimm'
;
modify lookVerb
verb = 'schau'
;
modify iVerb
verb = 'inventar'
action(actor) =
{
if (itemcnt(actor.contents))
{
"Du hast "; listcont(actor); ". ";
listcontcont(actor);
}
else
"Du hast nichts bei dir.";
}
;
modify offPrep
preposition = 'vom'
;
modify articles
article = 'der' 'die' 'das' 'des' 'dem' 'den'
;
modify thing
verIoTakeOff(a)={"Wie willst du da etwas herunter nehmen?";}
verDoTakeOff(a,io)={if (self.location = a)
{
"Du hast doch schon "; self.adesc; "! ";
}
}
verDoTake(a)={if (self.location = a)
{
"Du hast doch schon "; self.adesc; "! ";
}
}
;
parseDisambig: function(str, lst)
{
"Leider ist \"<<str>>\" hier zweideutig, wiederhol den Befehl bitte genauer, z.B. mit
der zusätzlichen Angabe eines Adjektives oder einem genaueren Substantiv!";
}
//RÄUME
startroom: room
sdesc = "Im Stall"
ldesc = "Dein Pferd steht hier. Es ist mit dem wunderschönen
Sattel deines besten Freundes gesattelt. Auf einem
Tisch liegt der Sattel, dem du deinem Pferd zu seinem
letzten Sieg beim Derby geschenkt hast."
;
//OBJEKTE
pferd: fixeditem
sdesc = "Pferd"
ldesc = {"Dein Pferd."; if (sattel_pferd.auf_pferd) " Es ist mit dem
wunderschönen Sattel deines besten Freundes gesattelt.";}
noun = 'pferd'
location = startroom
verIoTakeOff(a)={}
ioTakeOff(a,dobj)={dobj.doTakeOff(a,self);}
;
tisch: fixeditem
sdesc = "Tisch"
ldesc = {"Ein Tisch."; if (sattel_tisch.auf_tisch) " Auf ihm liegt der Sattel,
dem du deinem Pferd zu seinem letzten Sieg beim Derby
geschenkt hast.";}
noun = 'tisch'
location = startroom
verIoTakeOff(a)={}
ioTakeOff(a,dobj)={dobj.doTakeOff(a,self);}
;
sattel_pferd: item
sdesc = "wunderschönen Sattel"
adesc = "den wunderschönen Sattel deines besten Freundes"
ldesc = "Der wunderschöne Sattel deines besten Freundes."
noun = 'sattel'
adjective = 'wunderschönen'
location = startroom
isListed = nil
doTakeOff(a,io)={if (io=pferd) self.doTake(a);
else "Der wunderschöne Sattel deines besten Freundes
befindet sich auf dem Pferd!";}
doTake(a)={"Du nimmst den wunderschönen Sattel deines besten Freundes
vom Pferd."; self.moveInto(Me); self.isListed:=true;
self.auf_pferd:=nil;}
auf_pferd = true
;
sattel_tisch: item
sdesc = "Sattel des Pferdes"
adesc = "den Sattel des Pferdes"
ldesc = "Der Sattel, dem du deinem Pferd zu seinem
letzten Sieg beim Derby geschenkt hast."
noun = 'sattel' 'pferdes' 'pferds'
adjective = 'pferdes' 'pferds' 'sattel' 'des'
location = startroom
isListed = nil
doTakeOff(a,io)={if (io=tisch) self.doTake(a);
else "Der Sattel deines Pferdes liegt auf dem Tisch!";}
doTake(a)={"Du nimmst den Sattel deines Pferdes, den du ihm zu seinem letztem
Sieg beim Derby geschenkt hast, vom Tisch"; self.moveInto(Me);
self.isListed:=true; self.auf_tisch:=nil;}
auf_tisch = true
;
|
|
|
|
|
|
|