Newsgroup: it.comp.giochi.avventure.testuali
Titolo: HUGO - PROBLEMA

Salve a tutti! Forse non č il luogo adatto, ma sto avendo problemi
programmando la mia prima avventura con Hugo e non so dove sbattere la testa
per avere un aiuto da un italiano. C'č un ng dedicato alla programmazione??
Comunque sia, non metto limiti alla provvidenza e confido che fra i
capoccioni di questo ng ci sia qualcuno che abbia (tanta?) voglia di
aiutarmi :-)
Ho il classico melo e la classica mela (stop alle volgaritą!)...
object apple "apple"
{
in tree
article "an"
nouns "apple", "fruit"
adjectives "red", "mature", "juicy", "succulent"
pronoun "it"
size 2
initial_desc
{ "A red, juicy apple is pending from a low branch of the tree." }
long_desc
{ "The apple is succulent, mature and seems to tell you \"EAT ME\"." }
}
scenery tree "apple tree"
{
in courtyse
article "the"
nouns "tree", "plant"
adjectives "apple", "tall", "vigorous"
pronoun "it"
long_desc
{ "Tall and vigorous. The apple tree everyone dreams of." }
}
Se prendo la mela, tutto OK. Se perņ ci riprovo con "get apple" ottengo un
"You can't get that" invece di "You already have that". Questo succede solo
usando "apple" come soggetto, di fatto con "fruit" vą tutto a meraviglia.
Addirittura, se prendo la mela, mi sposto in un'altra locazione dove non c'č
nessun apple tree e scrivo "get apple", il parser continua a rispondere in
modo incorretto con "You don't see that".
C'č modo di correggere tutto ciņ?
Suppongo che il problema nasca in parte dalla grammar definition dei verbi
get/pick, che da prioritą agli oggetti non posseduti (multinotheld). Questo
fa in modo che l'albero venga considerato prima della mela.
Il vero problema sta probabilmente nel fatto che un aggettivo č sufficiente
per identificare il soggetto di una frase (cosa comune a qualsiasi AT che ho
giocato fino ad oggi, incluse quelle Infocom)...
... risultato: il parser da per scontato che il soggetto č l'albero!
Ho provato a togliere "apple" dagli aggettivi dell'albero e ad aggiungere
"apple tree" nei nomi.. Risultato? Con "get apple" tutto funziona alla
perfezione, ma un banale "examine apple tree" sputa un bel "You haven't seen
any apple tree, nor you're likely to, even if such thing exists" anche
l'albero ti sta davanti!
Ci sto diventando scemo. Qualcuno mi aiuti!

 Ci sto diventando scemo. Qualcuno mi aiuti!
Non puoi avere gli spazi nelle definizioni, però potresti usare l'istruzione 
"compound" di Hugo che consente di ottenere una parola da due parole.
In pratica dopo che hai incluso il file "verblib.h" e prima di includere 
"hugolib.h" inserisci
   compound "apple", "tree" 
così che tutte le volte che scrivi "apple tree" sulla riga di input ottieni  
Hugo te lo trasforma in "appletree"
A quel punto ridefinendo l'oggetto "tree" con
scenery tree "appletree"
{
	in emptyroom
	article "the"
	nouns "tree", "plant", "appletree"
	adjectives "tall", "vigorous"
	pronoun "it"
	long_desc
		{ "Tall and vigorous. The apple tree everyone dreams of." }
}
ottieni che digitando "get apple" si rivolge sempre all'oggetto "apple" e 
per esaminare o prendere l'albero devi digitare "get apple tree" e "examine 
apple tree".
In questo modo forse ottieni quello che cerchi, ma perdi la possibilità di 
rivolgerti all'oggetto "tree" con un semplice "apple".
Fammi sapere.
-- 
Paolo Vece - 
pv...@mclink.it

Fammi sapere.
Ciao Paolo.
Grazie mille per il suggerimento! Adesso il programma identifica la mela con
"apple" e l'albero con "apple tree", tuttavia se dopo aver preso la mela
digito un secondo "get apple" continuo ad ottenere "You can't take that"
come risposta.
Come potrei fare per correggere questa anomalia?
PS: Ho notato il tuo nome fra i credits di Kent Tessman sul manuale di Hugo.
Complimenti. Hai scritto o stai scrivendo qualche AT?
Saluti - Giacomo

 Complimenti. Hai scritto o stai scrivendo qualche AT?
Grazie. Avevo cominciato a scrivere un'avventura testuale (ai tempi di Hugo 
2.1 su Amiga), ma poi non ho proseguito perché avevo intenzione di tradurre 
la libreria in italiano, ma anche questa si è arenata.


la libreria in italiano, ma anche questa si è arenata.
Male!!! Ma capisco bene che non è facile portare avanti progetti così lunghi
ed impegnativi fino in fondo.
Perchè non riprendi la tua avventura e la fai in inglese (per il momento)?
Ques'anno al Comp'99 non c'era nessun titolo scritto con Hugo. L'anno
prossimo voglio porre rimedio anche se mi sento un pò disadatto, visti i
continui problemi che incontro con la programmazione.
Ora, per esempio, ne ho un'altro con la statusline. Vuoi sentirlo????
DIMMI DI SI!!!!!!!!!! Magari ti mando una email invece di invadere questo
ng.

 ng.
 
Certo che mi interessa. Mandalo pure nel gruppo, hai visto mai che sia utile 
a qualcuno che ha incontrato il tuo stesso problema? 


a qualcuno che ha incontrato il tuo stesso problema?
Già risolto (che ganzo)! Ma altri sono già all'orizzonte:
1) come mai un comando multiplo come "get apple and eat it" mi ritorna
"(Assuming you mean the apple) That doesn't make any sense"?
2) e perchè mai "get everything" mi risponde con un "Nothing to get"?
Mistero...
Per il primo punto non so davvero dove guardare.
Per il secondo ho provato ad analizzare la definizione di "get" e "take" nel
file "verblib.g" e mi pare che la sintassi con everything non sia definita
(giusto??). Farò qualche prova non appena posso.

 2) e perchè mai "get everything" mi risponde con un "Nothing to get"?
In HUGOLIB.H, nelle dichiarazioni iniziali, è presente la riga
	synonym "everything" for "~all"
che indica all'interprete di trasformare "everything" nella parola chiave 
"~all" ogni volta che viene scritto nella riga di comando. Da me funziona: 
sei sicuro che ci siano cose da prendere nella stanza in cui ti trovi?


Abbiamo ragione entrambi: di fatto con "then" funziona, ma non con "and". Ho
comunque notato che la stessa cosa succede in Curses di Graham Nelson, dove
get scarf and read book
restituisce
"You cant see any such thing"
mentre
get scarf then read book
restituisce
"Taken"
"Hobson's: A choice classical dictionary. It claims to have numerous
entries."
segno che Inform gestisce il caso allo stesso modo. Alla fine ho capito che:
AND - č previsto solo per permettere ad un verbo di agire su piů oggetti,
come in "get apple and book"
THEN - č previsto per legare comandi multipli, come "get scarf then read
book"
Quindi, anche se a livello logico "get scarf and read book" avrebbe senso, i
parser di Inform ed Hugo interpretano "read book" come il secondo oggetto
sul quale il verbo "get" dovrebbe agire, ed emettono di conseguenza degli
errori.
Secondo te c'č un modo semplice per far funzionare "and" in entrambi i casi?
Riguardo a "get everything", nella locazione ci sono solo l'albero e la mela
e solo quest'ultima puň venir presa.
Ti allego a seguito il listato (ho provato ad accluderlo come attachment ma
poi questo email non veniva visualizzato nel ng-?!?). Prova a compilarlo ed
a digitare "get everything" e vedrai che risponde "Nothing to get". Che sia
dovuto in qualche modo al
compound "apple"-"tree"?
#version 2.5
#set NO_FUSES
#set NO_MENUS
#set NO_RECORDINGS
#set NO_SCRIPTS
#set NO_STRING_ARRAYS
#set NO_AUX_MATH
#include "verblib.g"
compound "apple","tree"
#include "hugolib.h"
routine init
{
 ! color WHITE, DARK_GRAY, LIGHT_GREEN
 DEFAULT_FONT=PROP_ON
 Font(DEFAULT_FONT)
 cls
 prompt=">"
 player=you
 location=courtyse
 move player to location
 FindLight(location)
 DescribePlace(location)
 location is visited
}
routine main
{
 PrintStatusLine
}
room courtyse "COURTYARD - SOUTHEAST CORNER"
{
 long_desc
 { "A high apple tree stands in this corner of the courtyard." }
}
object apple "apple"
{
 in tree
 article "an"
 nouns "apple", "fruit"
 adjectives "red", "mature", "juicy", "succulent"
 pronoun "it"
 size 2
 initial_desc
 { "A red, juicy apple is pending from a low branch of the tree." }
 long_desc
 { "The apple is succulent, mature and telling you \"EAT ME\"." }
 after
 {
  object DoEat
  {
   "Mmmh... delicious! Byte after byte the apple is gone."
   remove self
  }
 }
}
scenery tree "appletree"
{
 in courtyse
 article "the"
 nouns "tree", "plant", "appletree"
 adjectives "tall", "vigorous"
 pronoun "it"
 long_desc
 { "Tall and vigorous. The apple tree everyone dreams of." }
}
player_character you "you"
{}

 e solo quest'ultima puň venir presa.
Non prende niente perché la mela č nell'albero (vedi la dichiarazione "in 
tree") ed il parser cerca solo di prendere gli oggetti che sono a portata di 
mano nella stanza.
Se digiti
	GET EVERYTHING FROM TREE
ti prende la mela. La cosa funziona anche se la lasci (quindi si trova nella 
stanza) e poi riprovi a fare
	GET EVERYTHING
