Newsgroup: it.comp.giochi.avventure.testuali
Titolo: inform:input

salve,
Devo richiedere al giocatore un codice di almeno 10 cifre e non so
come fare
Potreste aiutarmi?
Grazie,
    Gabriele Lazzara
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Potreste aiutarmi?
10 cifre, quindi presumo che il codice siano numerico (tipo un numero di 
telefono). Se guardi il manuale di Vincenzo Scarpa ci dovrebbe essere 
una funzione GetNumber o qualcosa del genere già pronta per l'uso. Forse 
la devi modificare un po' visto che mi sembra riconosca solo 1 o 2 
cifre. Il sito di Vincenzo è questo:
http://www.casalengo.it/vscarpa/inform/manuale/
Dovrebbe essere nel capitolo 2.
HAPPY INFORMING
Giovanni

 
L'ho guardato,ed effettivamente getnumber.h prende al massimo 2 cifre;
ma in Inform nessuno ha mai affrontato un problema simile??
       Gabriele Lazzara.


 L'ho guardato,ed effettivamente getnumber.h prende al massimo 2 cifre;
in generale non si fa mai input diretto, di solito si dice "c'e' un 
lucchetto a combinazione etc etc" e si usa un verbo tipo "imposta 
combinazione a 2345" o cose simili (azione SetTo).
Comunque se proprio ci tieni è abbastanza semplice leggere l'input 
"crudo" con gli opcode (assembler) della z-machine... cose tipo 
@read_char, per dire...
però non so se così facendo rompi la compatibilità con glulx. Io userei 
(uso) il primo metodo, in codice come questo, che spoilera il mio work 
in progress, ma me ne sbatto le balle:
****************** HERE BEGINS YE OLD CODE SNIPPET ****************
! For the console dial...
Constant DIAL_POSITIONS = 6;
...
[ XDial s;
    switch (s) {
     1: "~1: The African Veldt~";
     2: "~2: Mysterious Ulthar~";
     3: "~3: Fantasy World~";
     4: "~4: Young Carl Gauss' Home~";
     5: "~5: Ye Olde Adventurous Castle~";
     6: "~6: Hellish Dungeon~"; }
];
Object console "console" Lab
         with name "console",
              description [; print "This is the console that 
controls the 		virtual nursery... you can see a dial 
               		with ", DIAL_POSITIONS, " settings...
		 The dial is currently set to "; XDial (dial.state);  ],
         has static transparent;
Object dial "Dial" console
         with name "dial",
              description [; print "The dial has ", DIAL_POSITIONS, "
			positions. Beside each one there is a tag...
			Now the dial points to a position marked as ";
			XDial (dial.state); ],
              before [; Turn, Set: "Use: ~Set dial to <tag number>~. 		
			There are ", DIAL_POSITIONS, " positions.";
		SetTo: if ((second > 0) && (second <=DIAL_POSITIONS)) {
                         self.state = second;
                         print "You turn the dial, setting it to ";
                         XDial (self.state);
                         Set_Portal (self.state); ! effetto collaterale
                         return true; }
                 print "You cannot, the legal positions go from 1 to ",
				DIAL_POSITIONS, "^";
                                	return true; ],
              state 1,  !!!initial state
         has scenery;
**************HERE ENDS THE VERY OLD CODE SNIPPET *******************
ma che bel codice, non pensavo di essere così bravo... certo, sono tre 
anni che non ci rimetto mano, quasi quasi impacchetto una preview con 
quello che ho pronto e ve la propongo, così mi date dei bei consigli e 
mi fate tornare la voglia di sviluppare... mmmmhh...
ciao
S

       Gabriele Lazzara.
Molto più semplicemente, tratta i numeri come delle stringhe. Dai
un'occhiata all'esercizio sui vettori verso la fine del capitolo 2 del
mio manuale... al posto delle lettere gli sostituisci i numeri e il
gioco è fatto.
Ciao da
Vincenzo