Newsgroup: it.comp.giochi.avventure.testuali
Titolo: [Inform] Quesiti sui contenitori

Class Contenitore
	with	capacity 0,
			carried 0,
			before [;
			Receive:
			if  ((~~(noun provides size)) || noun.size > self.capacity) {
			print (the) noun, " è troppo grande e non può essere inserito.";
			rtrue;
			} else if (self.capacity < self.carried + noun.size) {
			print  (the) self, " è già pieno a sufficenza.";
			rtrue;
			} else {
			self.carried = self.carried + noun.size;
			move noun to self;
			"Fatto !";
			}
			LetGo:
			if  (noun provides size) {
			self.carried = self.carried - noun.size;
			rfalse;
			}
			],
	has container openable;
Contenitore portacd "porta oggetti" corolla
with	name 'portaoggetti',
		capacity 5,
		description [;
		print "Il porta oggetti della tua macchina,
		       solitamente lo utilizzi come porta cd.";
		if  (self.open) print "^Ora è aperto.^";
		else print "^E' chiuso.^";
		],
has openable scenery;
--------------------------
Risultato:
 >esamina portaoggetti
Il porta oggetti della tua macchina, solitamente lo utilizzi come porta cd.
E' chiuso.
 >apri portaoggetti
Hai aperto il porta oggetti, trovando un cd degli Smashing Pumpkins e un 
cd dei Depeche Mode.
 >esamina portaoggetti
Il porta oggetti della tua macchina, solitamente lo utilizzi come porta cd.
E' chiuso.
... nooo è aperto.
Forse dovrei gestire il contenitore con After, ma non ho idea di come 
fare con quella classe !!!
--------------------------
Secondo quesito
ho i due cd, naturalmente entrambi hanno 'cd'  in comune (with name	'cd')
come faccio a decidere quale prendere???
-- 
www.italiansaints.it
 - Il Fan Club Italiano Del Southampton f.c.

 come faccio a decidere quale prendere???
A meno che tu non fornisca una regola di disambiguazione usando 
ChooseObject (§33 del DM4), il giocatore dovra' specificare il cd che 
vuol prendere. Dovrebbe venir fuori qualcosa del genere:
 > PRENDI CD
Quale intendi il cd degli Smashing Pumpkins o il cd dei Depeche Mode?
 > DEPECHE
Preso.
Ovviamente comandi come PRENDI CD DEI DEPECHE, o anche PRENDI CD 
PUMPKINS non creano problemi.
bye
-- 
Paolo Lucchesi
email: plucchesiNOSPAM(at)NOSPAMtin(dot)NOSPAMit
homepage: 
http://www.paololucchesi.it
"Non viviamo in un mondo perfetto (per fortuna)"

 come faccio a decidere quale prendere???
se i due oggetti hanno, per esempio,
...
with name 'cd''degli''smashing''pumpkins'
...
with name 'cd''dei''depeche''mode'
...
un 'prendi cd' darà come risposta una cosa del tipo 'quale cd vuoi prendere,
il cd degli smashing pumpkins o il cd dei depeche mode?' e a quel punto
basta dire tipo 'cd degli smashing pumpkins' o 'cd smashing' che il problema
si risolve automaticamente. In realtà il problema è piuttosto per quei 'dei'
e 'degli', visto che sono ragionevolmente ammissibili frasi tipo 'prendi cd
dei depeche' o 'prendi smashing' ma sicuramente non 'prendi degli' che
invece avrebbe comunque esito positivo.
Una possibile soluzione è definire come proprietà una routine parse_name che
prende in considerazione i singoli casi, tipo
...
with parse_name [x n;
	n=0;
	x=NextWord();
	while (x=='cd' or 'degli' or 'smashing' or 'pumpkins') {
		if (x~='degli') n++;
		x=NextWord();
		}
	return n;
	]
...
ciao,
marco
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 bye
Hai ragione al 50%
Se digito solamente
 >depeche
o
 >pumpkins
funziona, ma se provo a digitare
 >Prendi cd dei depeche
mi stampa a  video la frase:
Quale intendi il cd degli Smashing Pumpkins o il cd dei Depeche Mode?
O provato anche ad estendere il verbo:
Extend 'prendi' * noun 'degli' 'dei' noun -> Take;
senza alcun risultato.
Ora comunque do un'occhiataal Dm4.


 
Uhm, devo ancora 'studiare' parse_name !!! ;-)


 Quale intendi il cd degli Smashing Pumpkins o il cd dei Depeche Mode?
Molto strano: ma hai messo 'dei' e 'degli' tra i name dei rispettivi cd?
Comunque, per il problema 'dei' 'degli' la soluzione parse_name mi sembra
tra le 
migliori.
f.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 
No non l'ho messo perché volevo fare una cosa più pulita ed estendere il 
verbo...
dovrò scendere a compromessi :-)