Forum moved to if-forum.org
Autor Nachricht
<  Inform7/GerX: "Was meinst du, x oder y?"
ChrisW
BeitragVerfasst am: Fr, 29 Jan 2010 - 4:07  Antworten mit Zitat
Abenteurer
Abenteurer


Anmeldungsdatum: 26.08.2002
Beiträge: 278
Wohnort: Leipzig

Hallo erstmal wieder, nach so langer Zeit. Ich arbeite mich gerade in Inform7 und die deutsche Extension ein - Respekt, die funktioniert schon richtig gut! -, bin dabei allerdings auf ein kleines Problem gestoßen und bin nicht sicher, obs an mir oder an der Library liegt.

Folgender Beispielquelltext...
Code:
Include German by Banbury & Christian Bluemke.

Kanzleramt is a room.

Gerd is a man. He is here.
Understand "kanzler" as Gerd.

Helmut is a man. He is here.
Understand "kanzler" as Helmut.

führt bei mir zu diesem Ergebnis:

Zitat:
Kanzleramt
Du siehst hier Gerd und Helmut.

>u kanzler
Was meinst du, Gerd oder Helmut?

Ich hätte als Antwort eher "Wen meinst du...?" erwartet, also Miscellany 45 statt 46.

Gibt's ne Möglichkeit, das zu bekommen?

Viele Grüße, Chris
_________________
"Ein Musiker! Was will der hier so spät?" Stolzing (Meistersinger v.N.)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ChristianB
BeitragVerfasst am: Fr, 29 Jan 2010 - 6:20  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg

Hallo zurück!

ChrisW hat folgendes geschrieben:
Ich hätte als Antwort eher "Wen meinst du...?" erwartet, also Miscellany 45 statt 46.

Hmmm. In der Routine NounDomain() gibt es zwei Zeilen (4573 f.), die das eigentlich richtig ausgeben sollten:

Code:
    if (context==CREATURE_TOKEN) L__M(##Miscellany, 45);
    else                         L__M(##Miscellany, 46);

Warum das nicht klappt, muss ich mal näher ergründen. Das Problem existiert in deform aber auch -- vielleicht hat Martin da eine Idee. Bei der LM für ##Miscellany, 49 gab's auch Probleme, da habe ich aber schon was nicht so ganz Elegantes reingemogelt. Wie man das in diesem neuen Fall retten könnte, will mir jetzt gerade nicht einfallen.

Edit: Das Problem ist offenbar noch ursprünglicher, denn auch im englischen Original funktioniert das nicht:

Mein englisches Testspiel hat folgendes geschrieben:
Kanzleramt
You can see Gerd and Helmut here.

>x kanzler
Which do you mean, Gerd or Helmut?


Nicht gut. Eigentlich sollte es "Who do you mean ... " heißen.

Edit 2: So wie es aussieht, wird der Creature_Token-Kontext nur bei Konversation gesetzt. Bei allen anderen Aktionen wird das ignoriert. Der Parser müsste eigentlich gucken, ob beide Objekte animate sind und wenn ja, die Wen-Frage stellen. Wenn nur eines von den Objekten unbelebt ist, kommt das vielleicht etwas merwürdig rüber:

>u kanzler
Wen meinst du, Helmut oder den Weißwein?

Du könntest Dich ja vorerst mit einer neuen Disambiguisierungs-Regel behelfen (was ja sowieso immer ganz nett ist für den Spieler):

Does the player mean examining Helmut: it is very unlikely.

Viele Grüße,
Christian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Martin
BeitragVerfasst am: Fr, 29 Jan 2010 - 9:02  Antworten mit Zitat
Experte
Experte


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

ChristianB hat folgendes geschrieben:
Warum das nicht klappt, muss ich mal näher ergründen.

Inform schaut offenbar nicht, welche Objekte ausgegeben werden sollen, sondern welches Token untersucht wird. Man könnte die von Christian identifizierten Zeilen gegen eine solche Überprüfung austauschen:

Code:
    j = 1; marker = 0;
    for (i=1 : i<=number_of_classes : i++) {
        while (((match_classes-->marker) ~= i)
            && ((match_classes-->marker) ~= -i)) marker++;
        if (match_list-->marker hasnt animate) j = 0;
    }
   
    if (j) L__M(##Miscellany, 45); else L__M(##Miscellany, 46);

    ! if (context==CREATURE_TOKEN) L__M(##Miscellany, 45);
    ! else                         L__M(##Miscellany, 46);

Im Kanzlerbeispiel funktioniert das ganz gut:

Frotz hat folgendes geschrieben:
>u kanzler
Wen meinst du, Helmut oder Gerd?

>gerd
Du siehst nichts Besonderes an Gerd.

>u gerd
Was meinst du, Gerd oder den Weißwein?

>wein
Ein 2002er Château de Gerd.

Vielleicht sollte das in deform Standard sein.
_________________
Every silver lining has a cloud.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ChristianB
BeitragVerfasst am: Fr, 29 Jan 2010 - 13:10  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg

Martin hat folgendes geschrieben:
Vielleicht sollte das in deform Standard sein.

Gekauft, danke Martin! Ich denke schon, dass das Standard sein sollte (wenn es nicht noch irgendwem gelingt, die Abfrage auszuhebeln).

Ich konnte noch keinen Fehler finden. Die Frage wird auch bei mehr als zwei Kandidaten korrekt gestellt. Zum Ausprobieren für die vielen fleißigen I7-Autoren habe ich das schon mal in die deutsche Erweiterung aufgenommen und eine neue Version hochgeladen.

Vielen Dank an Christoph fürs Finden und Martin fürs Reparieren!

Viel Spaß weiterhin,
Christian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ChrisW
BeitragVerfasst am: Fr, 29 Jan 2010 - 13:27  Antworten mit Zitat
Abenteurer
Abenteurer


Anmeldungsdatum: 26.08.2002
Beiträge: 278
Wohnort: Leipzig

Wow, das ging schnell! Vielen Dank euch beiden für die Hilfe!

ChristianB hat folgendes geschrieben:
Du könntest Dich ja vorerst mit einer neuen Disambiguisierungs-Regel behelfen (was ja sowieso immer ganz nett ist für den Spieler):

Does the player mean examining Helmut: it is very unlikely.


Es geht bei mir auch in der Praxis um Berufsbezeichnungen, die wahrscheinlich vom Spieler kaum verwendet werden, aber falls doch, kann Inform keine fundierte Annahme treffen, wer von beiden gemeint ist. Die Trefferquote wäre fifty-fifty. Solche Fälle gibt's halt auch. :)
_________________
"Ein Musiker! Was will der hier so spät?" Stolzing (Meistersinger v.N.)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Martin
BeitragVerfasst am: So, 31 Jan 2010 - 20:16  Antworten mit Zitat
Experte
Experte


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

So, eine neue Version von deform ist oben. Sie enthält nur den oben gezeigten Patch, wer den also schon drin hat, kann sich den Download sparen.

Ich hatte zunächst befürchtet, dass durch diesen Fix auch leere Nachfragen, bei dem Objektangaben ganz fehlen ("Was willst du nehmen?") mit einem "Wem" bedacht werden, aber das ist nicht der Fall - das wird komplett in PrintCommand() gelöst.
_________________
Every silver lining has a cloud.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ChristianB
BeitragVerfasst am: So, 31 Jan 2010 - 23:08  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg

Super, dankeschön! Ich habe den Fehler an Graham Nelson gemeldet -- bin gespannt, was er dazu sagt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ChristianB
BeitragVerfasst am: Di, 30 März 2010 - 23:15  Antworten mit Zitat
Experte
Experte


Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg

Graham Nelson hat Martins Lösungsvorschlag für die nächste Version von I7 übernommen. Im Changelog wird es dann heißen:

Graham Nelson hat folgendes geschrieben:
(c) In this release, the Inform parser changes the default way in which it
asks what is meant by an ambiguous noun such as FROST. It can ask the
question in two different forms:

(1) Who do you mean, Jack Frost or Jill Frost?
(2) Which do you mean, Jack Frost or Jill Frost?

In the past it has used form (1) if the token being parsed was "[someone]", and (2) otherwise. This wasn't very accurate, as plenty of other tokens might expect a person rather than a thing to be typed; but in English, it didn't matter very much, because "which" wasn't too bad for people. In German, it made a bigger difference, and at Christian Blümke's suggestion we are incorporating a change worked out by German Inform users: message (1) is used if all of the possible meanings refer to people, and message (2) otherwise.

Feine Sache.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
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