| Geschrieben um 17:20 am 14.09.2010 | Zitat | Editieren | Löschen | |
Mitglied Retired Gumby Beiträge: 1062 | <td valign="top"><div class="post"><p>Ich möchte gerne das Verben-Wörterbuch eines Spiels durchsuchen und überprüfen, ob Verben definiert wurden, die bestimmte Endungen tragen (‘e’ und ‘en’).</p> <p>Wie man die Endungen bei einer Vokabel prüft, kann ich mir gerade noch zurechtlegen, aber wie man das Lexikon von Z-Machine und Glulx durchsucht, ist mir ein Rätsel.</p> <p>Was muss ich machen? Wo muss ich nachschlagen?</p> <p>Hilfe!</p> <p>Edit: Okay, für die Z-Maschine habe ich etwas in der Art hinbekommen. Muss ja wohl in Glulx auch irgendwie gehen …</p> <p>Es werden nur neue, vom Autor definierte, Verben berücksichtigt.</p> <p>“`Array LibcheckIgnoreVerbs table</p> <p> ‘baumle’ ‘durchstoe’ ‘ende’ ‘klettre’ ‘konsultie’</p> <p> ‘lage’ ‘meldungen’ ‘nee’ ‘noe’ ‘oeffne’</p> <p> ‘pronomen’ ‘punkte’ ‘restore’ ‘save’ ‘schnueffe’</p> <p> ‘scope’ ‘score’ ‘showme’ ‘streichle’ ‘superbrie’</p> <p> ‘trace’ ‘tree’ ‘verbose’ ‘verschlie’ ‘wedle’</p> <p>;</p> <p>[ YLibcheck i j k l last last2 ignore<em>verbs</em>num;</p> <p> ignore<em>verbs</em>num = LibcheckIgnoreVerbs—>0;</p> <p> for (i = dict<em>start : i <= dict</em>end-dict<em>entry</em>size : i=i+dict<em>entry</em>size ) {</p> <p> j = i->#dict_par1;</p> <p> if (0 ~= j&1) {</p> <p> for (k = 1 : k <= ignore<em>verbs</em>num : k++ )</p> <p> if (LibcheckIgnoreVerbs—>k == i) j=-1;</p> <p> if (j==-1) continue;</p> <p> last = LastCharacterAddress(i);</p> <p> last2 = LastCharacterAddress(i, 1);</p> <p> if (last == ‘e’ || (last == ‘n’ && last2 == ‘e’) )</p> <p> print “Das Verb ‘”, (address) (i),</p> <p> “’ endet mit ‘e’ oder ‘en’.^”;</p> <p> }</p> <p> }</p> <p> print “^^”;</p> <p>];“`</p> </div></td> |
| Geschrieben um 08:46 am 15.09.2010 | Zitat | Editieren | Löschen | |
Mitglied Retired Gumby Beiträge: 702 | <td valign="top"><div class="post"><p>Blöderweise werden die globalen Variablen dict<em>start, dict</em>end und dict<em>entry</em>size nur für Z-Code, aber nicht für Glulx gesetzt. Ansonsten würde Dein Code auch für Glulx funktionieren.</p> <p>Leider gibt die <a href="http://www.eblong.com/zarf/glulx/technical.txt">Glulx Inform Technical Reference</a> keinen genauen Aufschluss über den Ort des Dictionaries, daher muss man sich diese Werte aus der Rouitine Tokenise__ zusammensuchen.</p> <p>Schneller Fix:</p> <p>“`[ YLibcheck i j k l last last2 ignore<em>verbs</em>num;</p> <p> ignore<em>verbs</em>num = LibcheckIgnoreVerbs—>0;</p> <p> </p> <p> #ifdef TARGET_GLULX; </p> <p> dict<em>start = #dictionary</em>table + WORDSIZE;</p> <p> dict<em>entry</em>size = DICT<em>WORD</em>SIZE + 7;</p> <p> dict<em>end = dict</em>start + #dictionary<em>table—>0 * dict</em>entry_size;</p> <p> #endif;</p> <p> </p> <p> for (i = dict<em>start : i < dict</em>end : i = i + dict<em>entry</em>size ) {</p> <p> j = i->#dict_par1;</p> <p> if (0 ~= j&1) {</p> <p> for (k = 1 : k <= ignore<em>verbs</em>num : k++ )</p> <p> if (LibcheckIgnoreVerbs—>k == i) j=-1;</p> <p> if (j==-1) continue;</p> <p> last = LastCharacterAddress(i);</p> <p> last2 = LastCharacterAddress(i, 1);</p> <p> if (last == ‘e’ || (last == ‘n’ && last2 == ‘e’) )</p> <p> print “Das Verb ‘”, (address) (i),</p> <p> “’ endet mit ‘e’ oder ‘en’.^”;</p> <p> }</p> <p> }</p> <p> print “^^”;</p> <p>];“`</p> <p>Natürlich wäre es sauberer, diese Variablen dort, wo auch die Z-Code-Pendants gesetzt werden, zu definieren, damit alles durchgängig ist.</p> <p>Das habe ich unter I6 mit Latin1-Glulx getestet. Ich hoffe, dass der Code auch mit Unicode-Glulx funktioniert.</p> <p>Oh, und wenn man das Kleiner-Gleich in ein einfaches Kleiner-Als umwandelt, spart man sich die Subtraktion von dict<em>entry</em>size.</p> </div></td> |
| Geschrieben um 10:49 am 15.09.2010 | Zitat | Editieren | Löschen | |
Mitglied Retired Gumby Beiträge: 1062 | Super, alles perfekt! Danke! |