Newsgroup: it.comp.giochi.avventure.testuali
Titolo: Topic parsing potenziato per INFORM

Ho realizzato una potentissima versione di topic parse per Inform, che 
permette di utilizzare contemporaneamente oggetti e stringhe come test su 
ciò che ha immesso l'utente in verbi che hanno un "topic".
Ecco un esempio:
Object coat "black coat"
with
        name 'black' 'coat';
Object coat1 "dark blue coat"
with
        name 'dark' 'blue' 'coat';
Object oracle "oralce" room
with
        name "oracle",
        description "A nice oracle",
        life[;
                        switch( MFS_TopicParse(MFS_Topic_All) ) {
                                oracle: "You are asking about myself";
                                coat: "You are asking about the black coat";
                                coat1: "You are asking about ", (the) coat1;
                                'future': "The future is bright";
                                'past': "Old good days!";
                                MFS_Undefined: rtrue;
                                nothing: "I can't understand you";
                        }
                        "That is something you can't ask about";
        ],
        has talkable;
Questa versione consente di parlare con oggetti o persone e di usare parole 
chiave oppure i nomi degli oggetti, indipendentemente dallo scope degli 
(dalla possibilità di riferirsi agli) oggetti. In pratica, è possibile 
digitare cose come:
ask oracle about ajklsdfh future asdf
ask oracle about past
ask oracle about coat
ask oracle about black coat
ask oracle about asdfasdfa
Ho ricostruito una piccola funzione di parsing per fare questo. La routine:
-Estrae la prima parola esistente in vocabolario tra quelle immesse nel 
"topic" di conversazione, oppure:
-Identifica fra gli oggetti quello che ha il nome più vicino a quanto 
digitato
-In caso di ambiguità, presenta una lista di scelte fra gli oggetti che
potrebbero essere nominati dal giocatore ("what do you mean...?")
La routine torna: 
- Il codice di un oggetto se è stata in grado di identificare un oggetto
- Un numero di parola se ha individuato una parola
- nothing se non ha individuato nulla
- MFS_Undefined se ha individuato più oggetti (ed in questo caso stampa un 
messaggio sensibile).
Il parametro (per ora) può essere nulla oppure MFS_Topic_All. Se non si 
specifica nessun parametro, la funzione non cerca oggetti che possano 
soddisfare il topic; questo rende la funzione molto veloce e flessibile.
La routine fa parte della libreria MFS (anche se è indipendente e può essere 
inclusa senza l'aggiunta di altri moduli); se il newsgroup è interessato, 
farò un pacchettino.
Nota: la routine è compatibile con infit (basta cambiare 3 stringhe).
Cordiali saluti,
Giancarlo

 ciň che ha immesso l'utente in verbi che hanno un "topic".
Pare bella... e mi avrebbe semplificato un bel po' di lavoro gia' 
fatto... Sono curioso, vorrei provarla...
-- 
Paolo Lucchesi
email: 
pluc...@tin.it
homepage: 
http://www.paololucchesi.it
"Non viviamo in un mondo perfetto (per fortuna)"

 
Buono. Per il momento si può avere una anteprima qui:
http://niccolai.ws/works/Hobby/MFS_TopicParse.h
Ma sto tenendo tutto in CVS. Se gli amici del NG sono pratici di CVS...
Comunque la versione definitiva (sia in inglese che in Italiano) sarà pronta 
quando WarMage sarà "stabile", il che è quasi fatto. Alla libreria manca 
solo il sistema "moving along a path", che potrebbe essere pronta in poche 
ore, e forse una ritoccatina al following. Ho anche fatto una traduzione in 
Italiano (che sarebbe da provare).
JC1

 JC1
Ciao JC1,
per la traduzione di WM quando vuoi cominciare? mi sai dire esattamente
quante battute sono?  Io pensavo di cominciare con 2 o 3 pagine, per
provare. Volevo fare una cosa simile con i vecchi giochi della Phoenix, ma
poi non mi sono + messo d'accordo con Adam Atkinson, cosi' potrei dirottare
il lavoro di traduttore altrove! ;-)
Ciao,
Marco
P. S. Bella 'sta cosa del topic parsing, anche se devo ancora pensare a come
potrebbe essermi utile!

 Marco
Anche subito. Basta che ti scarichi il CVS. Se sai come fare, ti do un 
account in scrittura, così puoi modificare i file e inviarmeli.
Le battute... beh non saprei davvero. Siccome la maggior parte di codice sta 
nella libreria, che ho già tradotto (ma è da riguardare), la maggior parte 
di caratteri del sorgente dovrebbe essere testo, direi il 75%, quindi 
approssivativamente 110 mila battute.
Devo aggiungere una parte "centrale", dove ci saranno un paio di enigmi in 
più e una pattuglia che gira periodicamente, ma già fare la zona 
dell'università, Tolan e la prima parte del dungeon (chiamata ship) 
dovrebbe essere un bel lavoro...
Se ti interessa, e se sai usare il CVS, fammi un fischio... sono in linea in 
questo momento.
JC1


 JC1
Ciao,
Marco

Zerouno wrote:

Il CVS (Concurrent versioning system) è un sistema che consente di lavorare 
a più mani su di un sorgente, e tenere costantemente up-to-date il lavoro 
di tutti (sia come spettatori che come scrittori di codice). In realtà è 
così comodo che io lo uso persino per tenere aggiornate le varie versioni 
del software che ho sul mio PC di casa, sul portatile di lavoro e sui 
server dove installo il tutto...
I comandi sono relativamente semplici. Dopo un login, sei in grado di 
effettuare un "checkout", quindi degli "update" periodici. Quando modifichi 
qualcosa, fai un commit ed il sistema registra la tua modifica. Il bello è 
che se un altro sviluppatore effettua un commit sullo stesso file (e cambia 
le stesse cose che hai cambiato tu), ti viene presentata la differenza tra 
il tuo codice e quello che è stato realizzato nel frattempo, quindi tu sei 
in grado di riparare il tutto.
Beh, comunque, posso arrangiarmi diffando il tuo lavoro (eseguendo un diff 
con conseguente patch). 
Ora riporto gli ultimi aggiornamenti del lavoro che ho fatto in inglese 
nella parte in italiano, committo il tutto e ti mando un TGZ (che puoi 
aprire comodamente con il winzip).
JC1.

Nota: attendo una tua mail per avere il tuo indirizzo...

 quando WarMage sarà "stabile",
Interessante. Quand'e' pronta la versione definitiva, per favore, avvisa e
indica quali righe cambiare in Infit.
ciao,
f.

Francesco Cordella wrote:

Non c'è (e non ci sarà) nulla da cambiare in infit. Puoi provarla subito; la 
versione definitiva non cambierà nell'api, non così tanto da inficiare un 
lavoro basato su di essa.
Ciao,
 JC1

 Nota: attendo una tua mail per avere il tuo indirizzo...
gyrev
chiocciola
tin
punto
it
Ciao,
Marco