| Geschrieben um 22:29 am 27.08.2004 | Zitat | Editieren | Löschen | |
Mitglied Pupil Gumby Beiträge: 12 | Ich habe einen Wald mit vielen Bäumen, darunter ist ein spezieller roter Baum. Nun soll man den roten Baum aber nicht mit ‘untersuche Baum’ untersuchen können (da dann die Beschreibung der normalen Bäume kommen sollte), sondern nur mit ‘untersuche roten Baum’. Gibt es eine Möglichkeit in Tag, ein Adjektiv untrennbar an den Namen zu binden, oder muss man sich da etwas anderes überlegen? |
| Geschrieben um 09:00 am 30.08.2004 | Zitat | Editieren | Löschen | |
Mitglied Retired Gumby Beiträge: 707 | <td valign="top"><div class="post"><p>In diesem Fall empfiehlt sich, die genaue Wortfolge explizit in der Aktion <strong>ObjParser</strong> zu definieren. Diese wird vor dem normalen Parsen von Objekten aufgerufen, ein Objekt gilt als eindeutig gefunden, wenn die Variable <strong>aObj</strong> einen Wert zugewiesen bekommt. Der Wortzähler muss dann auf dem ersten Wort stehen, das nicht zum analysierten Objekt gehört. (Mehr dazu in <a href="http://www.martin-oehm.de/tagman/kap_15.html#15.3">Kapitel 15</a> des T.A.G.-Handbuchs.)</p> <p>Der rote Baum wird ohne eigenes Objektvokabular - oder nur mit zusätzlichem Vokabular, das nicht mit den anderen Bäumen in Konflikt tritt, ‘rotbuche’ zum Beispiel - definiert und das Spiel bekommt folgende Aktion:</p> <p>“`</p> <p>Aktion ObjParser</p> <p>Ausf</p> <p> lokal x</p> <p> </p> <p> leseArt m x</p> <p> leseAdj ‘rot’ m x</p> <p> wenn (x) und (Wort = ‘baum’) dann</p> <p> nächstesWort</p> <p> sei aObj roter_Baum</p> <p> Ende</p> <p>EndeAusf</p> <p>“`</p> <p>Mit <strong>leseArt</strong> wird der passende Artikel gelesen, in diesem Fall ein makuliner, also ‘den’ oder ‘dem’. Wenn es einen solchen Artikel gibt, wird der Wortzähler weiterbewegt - und genau dazu dient diese Anweisung, denn es wird nicht verlangt, dass ein Artikel eingegeben wird. Danach wird auf ‘rot’ mit passender maskuliner Endung geprüft und eventuell der Wortzähler vorangeschoben. Hier wird das Ergebnis dieser Analyse, abgelegt in <strong>x</strong>, allerdings verwendet und das nächste Wort, diesmal ohne Endungen, geprüft. Ist es ‘Baum’, so wird der Wortzähler mit <strong>nächstesWort</strong> vorgeschoben und mit <strong>aObj</strong> wird nun das Ergebnis des Objektparsers angegeben.</p> <p>Wenn die Wortfolge nicht ‘roten baum’ oder ‘den roten baum’ war, wird der Wortzähler zurückgesetzt und die reguläre Analyse beginnt. Diese könnte dann ‘baum’ ohne Adjektiv finden, nicht jedoch den roten Baum. So wird eine Nachfrage des Parsers umgangen.</p> </div></td> |
| Geschrieben um 15:26 am 30.08.2004 | Zitat | Editieren | Löschen | |
Mitglied Master Gumby Beiträge: 103 | <td valign="top"><div class="post"><p><strong>Martin kann viel zuviel definieren und:</strong></p> <blockquote> </blockquote> <p>“`</p> <p>Aktion ObjParser</p> <p>Ausf</p> <p> lokal x</p> <p> </p> <p> leseArt m x</p> <p> leseAdj ‘rot’ m x</p> <p> wenn (x) und (Wort = ‘baum’) dann</p> <p> nächstesWort</p> <p> sei aObj roter_Baum</p> <p> Ende</p> <p>EndeAusf</p> <p>“`</p> <p>Mir fällt da eine viel einfachere Lösung ein:</p> <p>“`#WIN</p> <h1>PIN</h1> <p>Richtung N ‘norden’ ‘n’ *</p> <p>Richtung NO ‘nordosten’ ‘no’ *</p> <p>Richtung O ‘osten’ ‘o’ *</p> <p>Richtung SO ‘südosten’ ‘so’ *</p> <p>Richtung S ‘süden’ ‘s’ *</p> <p>Richtung SW ‘südwesten’ ‘sw’ *</p> <p>Richtung W ‘westen’ ‘w’ *</p> <p>Richtung NW ‘nordwesten’ ‘nw’ *</p> <p>Richtung H ‘oben’ ‘hoch’</p> <p>Richtung R ‘unten’ ‘runter’</p> <p>Richtung Rein ‘drinnen’ ‘rein’</p> <p>Richtung Raus ‘draussen’ ‘raus’</p> <p>Synonym ‘h’ ‘hoch’</p> <p>Synonym ‘r’ ‘runter’</p> <p>Synonym ‘rauf’ ‘hoch’</p> <p>Synonym ‘hinauf’ ‘hoch’</p> <p>Synonym ‘hinab’ ‘runter’</p> <p>Aktion Anfang</p> <p>Ausf</p> <p> Text ‘Verdammt! Ich muss mal! Aber</p> <p> gegen welchen Baum soll ich pinkeln?</p> <p> [f]D I E E N T S C H E I D U N G[n]</p> <p> [x]Ein toller Test, (C) 29. - 30.08.04</p> <p> [x]xehpuk</p> <p> [x]Aufhören: [f]ENDE[n]</p> <p> [x]Wenn dir nichts einfällt, drücke [f]HILFE[n]’</p> <p> Absatz</p> <p> Sei MaxInv 5</p> <p> Sei MaxGew 200</p> <p> GeheZu Wald</p> <p>EndeAusf</p> <p>Raum Wald</p> <p>Name ‘Eichenwald’ m</p> <p>Std Tschüss</p> <p>Raus Tschüss</p> <p>H Fliegen</p> <p>R Graben</p> <p>Besch ‘Du findest dich in einem Eichenwald wieder.</p> <p> Es ist ein sonniger Tag und der Wald strahlt</p> <p> eine eigenartige Aura aus.’</p> <p>Antwort Tschüss</p> <p>Besch ‘Bleib doch noch ein bisschen hier. Es ist</p> <p> doch gerade so schön. Außerdem willst</p> <p> du noch gegen einen Baum pinklen.’</p> <p>Antwort Fliegen</p> <p>Besch ‘Tut mir leid, aber du kannst nicht fliegen.’</p> <p>Antwort Graben</p> <p>Besch ‘Du konntest noch nie gut graben, darum</p> <p> haben dich auch alle im Kindergarten</p> <p> ausgelacht, als du es im Sandkasten</p> <p> versucht hast.’</p> <p>Obj Eichen</p> <p>Name ‘normal^ Eichen’ p</p> <p>Subst ‘eiche’ f ‘eichen’ p ‘baum’ m ‘bäume’ p</p> <p>Adj ‘normal’</p> <p>Ort Wald</p> <p>Attr fest</p> <p>Besch ‘Hoch gewachsene und gesund aussehende</p> <p> Eichen, ein schöner Anblick.’</p> <p>VorAusf</p> <p> (pinkeln)</p> <p> Text ‘Du hast dich entschieden, gegen irgendeine</p> <p> Eiche zu pinkeln. Als du es erledigt hast,</p> <p> stürmen tiefgraue Gewitterwolken heran und</p> <p> bedecken die Sonne. Es wird ziemlich dunkel</p> <p> und es ist gar nicht mehr schön. Das Schlimmste</p> <p> an der Sache ist, dass es anfängt zu regnen und</p> <p> dass zufälliger Weise der Baum, den du angepinkelt</p> <p> hast, von einem Blitz getroffen wird. Er fällt natürlich</p> <p> genau auf dich.’</p> <p> gestorben</p> <p>EndeAusf</p> <p>Obj rote_Eiche</p> <p>Name ‘rot^ Eiche’ f</p> <p>Subst ‘eiche’ f ‘baum’ m</p> <p>Adj ‘rot’</p> <p>Ort Wald</p> <p>Attr immobil</p> <p>Erst ‘Unter den vielen Bäumen findest du auch</p> <p> eine rote Eiche.’</p> <p>Besch ‘So etwas hast du noch nie gesehen. Eine rote</p> <p> Eiche. Nun, was sollst du davon halten?’</p> <p>VorAusf</p> <p> (pinkeln)</p> <p> Text ‘Du erledigst dein Geschäft an der roten</p> <p> Eiche. Eine gute Entscheidung, denn es</p> <p> war sehr erleichternt. Du beendest deinen</p> <p> Spaziergang und wirst später wiederkommen.’</p> <p> gewonnen</p> <p>EndeAusf</p> <p>Deko Erde</p> <p>Name ‘Waldboden’ m</p> <p>Vor ‘wald’</p> <p>Subst ‘erde’ f ‘gras’ n ‘moos’ n ‘boden’ m ‘rasen’ m</p> <p>Ort Wald</p> <p>Besch ‘Eben ein typischer Waldboden, bestehend</p> <p> aus Erde, Gras und Moos.’</p> <p>VorAusf</p> <p> (pinkeln)</p> <p> Stop ‘Dazu hat man Bäume!’</p> <p>EndeAusf</p> <p>Bef pinkeln</p> <p>Name ‘pinkeln’</p> <p>Verb ‘pinkle’ ‘pinkel’ ‘piss’ ‘pisse’ ‘uriniere’</p> <p>Syntax gegen dasObj</p> <p>Präp ‘auf’</p> <p>Ausf</p> <p> Wenn (aObj = Du) dann</p> <p> Text ‘Das würdest du nie freiwillig tun.’</p> <p> Ende</p> <p>EndeAusf</p> <p>Bef schweben</p> <p>Name ‘fliegen’</p> <p>Verb ‘fliege’ ‘hebe ab’ ‘steig empor’ ‘steige empor’ ‘flieg’</p> <p>Ausf</p> <p> Text ‘Tut mir leid, aber du kannst nicht fliegen.’</p> <p>EndeAusf</p> <p>Bef sandkasten</p> <p>Name ‘graben’</p> <p>Verb ‘grabe’ ‘buddel’ ‘grab’ ‘buddle’ ‘schaufle’</p> <p>Syntax in demObj</p> <p>Ausf</p> <p> Text ‘Du konntest noch nie gut graben, darum</p> <p> haben dich auch alle im Kindergarten</p> <p> ausgelacht, als du es im Sandkasten</p> <p> versucht hast.’</p> <p>EndeAusf</p> <p>Bef #Hilfe *</p> <p>Name ‘Hilfe’</p> <p>Verb ‘hilfe’ ‘tip’ ‘tipp’ ‘tips’ ‘tipps’</p> <p>Ausf</p> <p> Wenn (proz 55) dann</p> <p> Text ‘Pinkle gegen die rote Eiche.</p> <p> Es wird dir gut tun.’</p> <p> sonst</p> <p> Text ‘Es scheint sehr komfortabel</p> <p> zu sein, gegen eine der</p> <p> “normalen” Eichen zu pinkeln.</p> <p> Ich würde es dir empfehlen.’</p> <p> Ende</p> <p>EndeAusf</p> <p>Flagge PinkleGegenDich 6</p> <p>Aktion *</p> <p>Ausf</p> <p> Wenn (PinkleGegenDich > 0) dann</p> <p> Dekr PinkleGegenDich 1</p> <p> Wenn (PinkleGegenDich = 5) dann</p> <p> Text ‘Du kannst es nur noch fünf</p> <p> Minuten zurückhalten.’</p> <p> Ende</p> <p> Wenn (PinkleGegenDich = 4) dann</p> <p> Text ‘Du kannst es nur noch vier</p> <p> Minuten zurückhalten.’</p> <p> Ende</p> <p> Wenn (PinkleGegenDich = 3) dann</p> <p> Text ‘Du kannst es nur noch drei</p> <p> Minuten zurückhalten.’</p> <p> Ende</p> <p> Wenn (PinkleGegenDich = 2) dann</p> <p> Text ‘Du kannst es nur noch zwei</p> <p> Minuten zurückhalten.’</p> <p> Ende</p> <p> Wenn (PinkleGegenDich = 1) dann</p> <p> Text ‘Du kannst es nur noch eine</p> <p> Minute zurückhalten.’</p> <p> Ende</p> <p> Wenn (PinkleGegenDich = 0) dann</p> <p> Text ‘Du kannst dir nur noch zugucken,</p> <p> wie du dir in die Hose machst.</p> <p> Schnell rennst du nach Hause, um</p> <p> dich zu duschen und umzuziehen.</p> <p> Doch viele Leute sehen deine</p> <p> durchtränkte Hose und lachen dich</p> <p> dann hinter deinem Rücken aus.</p> <p> Am nächsten Tag findet man deinen</p> <p> leblosen Körper an einem Galgen</p> <p> bei dir zu Hause hängen.</p> <p> “Es war Selbstmord.”, bestätigt die</p> <p> Gerichtsmedizin.’</p> <p> gestorben</p> <p> Ende</p> <p> Ende</p> <p>EndeAusf</p> <p>Ende“`</p> <p>Aber wahrscheinlich ist das nicht die Lösung, die du gerne hättest.</p> <p>Denn dann fragt ja der Parser nach, welchen Baum man untersuchen will.“`> u baum</p> <p>Welchen Baum? Die normalen Eichen oder die rote Eiche?</p> <blockquote> <p>roten</p> </blockquote> <p>So etwas hast du noch nie gesehen. Eine rote Eiche. Nun, was sollst du davon halten?“`</p> <p>Dieser Mini-Test ist gar nicht schlecht geworden. Ihr könnt ihn ja mal ausprobieren!</p> </div></td> |
| Geschrieben um 16:08 am 31.08.2004 | Zitat | Editieren | Löschen | |
Mitglied Pupil Gumby Beiträge: 12 | @Amateur Zitat:
Denn dann fragt ja der Parser nach, welchen Baum man untersuchen will. Da hast du leider recht…der Sinn war ja, dass man den roten Baum nur untersuchen kann, wenn man weiß er existiert. @Martin Danke, die Lösung funktioniert perfekt - aber leider nur solange man den roten Baum auch in dem Raum untersucht, in dem er tatsächlich ist, ansonsten kommt es zu einem spielabsturzverursachenden Fehler…ich hab schon versucht eine Raumabfrage in die IF-Schleife mit einzubringen, aber entweder bin ich zu dumm oder es funktioniert aus einem andern Grund nicht. |
| Geschrieben um 08:31 am 01.09.2004 | Zitat | Editieren | Löschen | |
Mitglied Retired Gumby Beiträge: 707 | <td valign="top"><div class="post"><p><strong>Zensunni:</strong></p> <blockquote> <p>aber leider nur solange man den roten Baum auch in dem Raum untersucht, in dem er tatsächlich ist, ansonsten kommt es zu einem spielabsturzverursachenden Fehler.</p> </blockquote> <p>Hmm. Bei mir gibt es hier auch einen Fehler - wieder einmal ein Fehler im Interpreter. Der stürzt allerdings nicht ab, sondern meldet mir nur “Ich sehe hier kein.”</p> <p>Normalerweise solltest du den Raum des geparsten Objekts nicht abfragen müssen, das macht der Parser schon. Mit dem oben angegebenen Code kannst du den Baum nicht außerhalb des Waldes untersuchen, aber du könntest jemanden, der den Baum nicht sieht, danach fragen.</p> <p>Dummerweise wird beim manuellen Parsen der Name des Objekts nicht angelegt, der ja auch total unsinnig sein könnte. Daher ist die Fehlermeldung falsch uns schreibt nichts. (Ich könnte mir vorstellen, dass durch schlechte Initialisierung hier Buchstabensalat statt nichts ausgegeben wird. Wie es hier zum der Absturz des Interpreters kommen kann, sehe ich allerdings nicht.</p> <p><strong>Zensunni:</strong></p> <blockquote> <p>ich hab schon versucht eine Raumabfrage in die IF-Schleife mit einzubringen, …</p> </blockquote> <p>Das Problem kann man schon mit einer Raumabfrage umgehen:</p> <p>“`</p> <p>Aktion ObjParser</p> <p>Ausf</p> <p> lokal x</p> <p> </p> <p> wenn (roter_Baum hier) dann</p> <p> leseArt m x</p> <p> leseAdj ‘rot’ m x</p> <p> wenn (x) und (Wort = ‘baum’) dann</p> <p> nächstesWort</p> <p> sei aObj roter_Baum</p> <p> Ende</p> <p> Ende</p> <p>EndeAusf “`</p> <p>Damit ist nun die fehlerhafte Fehlermeldung des Parsers umgangen, wenn ich den Baum dort anspreche, wo er nicht zu sehen ist, kommt die Antwort “Ich kenne ‘roten’ nicht.” Weder sehr hilfreich noch korrekt. Um das zu reparieren definiert man eine Deko, die das von <strong>ObjParser</strong> gefundene Vokabular abfängt, und die nie zu sehen ist:</p> <p>“`</p> <p>Deko roter<em>Baum</em>Deko</p> <p>Name ‘rot^ Baum’ m</p> <p>Adj ‘rot’</p> <p>Subst ‘baum’ m</p> <p>Ort Nirwana</p> <p>Besch ‘Ein Hilfsobjekt, das “roter Baum” außerhalb</p> <p> des Walds abfängt.’</p> <p>“`</p> <p>Nun sollte alles funktionieren. Man kann den roten Baum auch als Gesprächsthema benutzen - dann jedoch muss man <strong>roter_Baum</strong> und <strong>roter<em>Baum</em>Deko</strong> abfangen, um sicherzustellen, dass das Thema überall - im Wald und außerhalb des Waldes - verstanden wird.</p> </div></td> |
| Geschrieben um 14:50 am 01.09.2004 | Zitat | Editieren | Löschen | |
Mitglied Pupil Gumby Beiträge: 12 | Vielen Dank, jetzt funktioniert es perfekt Zitat:
Ich hab mich wahrscheinlich mal wieder undeutlich ausgedrück: Nicht der Interpreter stürzte ab, sondern das Spiel. Es wurde der gesamte Bildschirm gelöscht und oben links ‘Ich sehe hier kein’ und unten rechts ein ‘[…]’ ausgegeben. Danach gab es keine Reaktionen mehr auf Tastendrücke irgendwelcher Art, und es blieb nur noch das gewaltsame Ende per Alt + F4. |