Inform e Glulx/Inform e ancora Inform/Su e giù con l'ascensore: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Gian BOT (discussione | contributi)
m Bot: sostituzione tag obsoleti
Riga 3:
 
{| style="width:100%;" class="wikitable"
|<ttcode>Ascensore<br>
Un semplice esempio che gestisce un ascensore a quattro piani<br>
di Vincenzo Scarpa<br><br>
Riga 11:
Sei al piano terra.<br><br>
Puoi vedere delle porte scorrevoli qui.<br><br>
></ttcode>
|}
 
Riga 17:
 
{| style="width:100%;" class="wikitable"
|<ttcode>>esamina le porte<br>
C'è un pulsante accanto alle porte.<br><br>
>premi pulsante<br>
Riga 25:
Sei nella cabina dell'ascensore.<br><br>
Puoi vedere un pannello di controllo con quattro tasti numerati da zero a tre.<br><br>
></ttcode>
|}
 
Riga 31:
 
{| style="width:100%;" class="wikitable"
|<ttcode>>premi 2<br>
Le porte si chiudono e la cabina si mette in movimento.<br>
Improvvisamente, le porte si aprono di nuovo.<br><br>
Riga 39:
Sei al secondo piano.<br><br>
Puoi vedere delle porte scorrevoli qui.<br><br>
></ttcode>
|}
 
Riga 45:
 
{| style="width:100%;" class="wikitable"
|<ttcode>>entra<br>
Le porte sono ancora chiuse: credi forse di essere un fantasma?<br><br>
>premi il pulsante<br>
Riga 53:
Sei nella cabina dell'ascensore.<br><br>
Puoi vedere un pannello di controllo con quattro tasti numerati da zero a tre.<br><br>
></ttcode>
|}
 
Riga 59:
 
{| style="width:100%;" class="wikitable"
|<ttcode>>premi 2<br>
Non accade nulla.<br><br>
></ttcode>
|}
 
come d’altra parte avviene in tutti gli ascensori che si rispettino. Per quanto riguarda invece il codice, occorre fare alcune considerazioni. Iniziamo dalla funzione <ttcode>Muovi_cabina</ttcode>:
 
[Muovi_cabina x y;
Riga 78:
];
 
I parametri che devono esserle passate sono rispettivamente il numero del piano che l’ascensore deve raggiungere (<ttcode>x</ttcode>) e il nome dell’oggetto al quale corrisponde il piano stesso (<ttcode>y</ttcode>). È facile allora capire che una chiamata del tipo:
 
Button -> Pulsante_2 "terzo pulsante"
Riga 88:
];
 
fa sì che, se il giocatore preme il pulsante <ttcode>due</ttcode>, viene effettuata una chiamata alla funzione <ttcode>Muovi_cabina</ttcode> con, come parametri, <ttcode>2</ttcode> per la variabile locale <ttcode>x</ttcode> e <ttcode>Piano_2</ttcode> per la variabile locale <ttcode>y</ttcode>. A questo punto, viene dapprima assegnata alla variabile locale <ttcode>piano_asc</ttcode> il valore contenuto in <ttcode>x</ttcode>, utile all’oggetto <ttcode>Ascensore</ttcode> per sapere a quale stanza deve indirizzare il giocatore quando questi esce dalla cabina:
 
Object Ascensore "Cabina dell'ascensore"
Riga 106:
piano_asc 0;
 
Segue poi, una condizione che verifica se il nome dell’oggetto al quale appartiene <ttcode>Porte_scorrevoli</ttcode> è o meno uguale al nome dell’oggetto passato come parametro alla funzione stessa. Se lo è, allora non accade nulla (il giocatore ha cioè premuto il tasto corrispondente al piano stesso in cui si trova la cabina dell’ascensore), altrimenti vengono spostati gli oggetti <ttcode>Porte_scorrevoli</ttcode> e <ttcode>Pulsante_chiamata</ttcode> al relativo piano.
 
Per capire meglio quanto ho appena detto, occorre rifarsi al concetto di [[w:Albero_(informatica)|albero]]; Inform, cioè, raggruppa gli oggetti con uno schema di questo tipo:
Riga 129:
 
{| style="width:100%;" class="wikitable"
|<ttcode>Cabina dell'ascensore<br>
Sei nella cabina dell'ascensore.<br><br>
Puoi vedere un pannello di controllo con tre tasti numerati come zero, uno e due.<br><br>
Riga 135:
(il pannello di controllo)<br>
È fisso al suo posto.<br><br>
></ttcode>
|}
 
Inform assegna il nome <ttcode>1</ttcode> al <ttcode>pannello di controllo</ttcode> anziché all’oggetto <ttcode>Pulsante_1</ttcode>. Questo bug, che non so se imputare a Inform stesso o a Infit, è possibile evitarlo con un po’ d’astuzia. Iniziamo a esaminare l’oggetto <ttcode>Pannello_controllo</ttcode>:
 
Object -> Pannello_controllo "pannello di controllo"
Riga 148:
has static;
 
La prima modifica che occorre fare è l’inserimento dell’azione <ttcode>Push</ttcode> (che in questo caso deve essere analoga a quella dell’oggetto <ttcode>Pulsante_1</ttcode>):
 
Object -> Pannello_controllo "pannello di controllo"
Riga 166:
 
{| style="width:100%;" class="wikitable"
|<ttcode>Cabina dell'ascensore<br>
Sei nella cabina dell'ascensore.<br><br>
Puoi vedere un pannello di controllo con quattro tasti numerati da zero a tre.<br><br>
Riga 173:
Le porte si chiudono e la cabina si mette in movimento.<br>
Improvvisamente, le porte si aprono di nuovo.<br><br>
></ttcode>
|}
 
Riga 191:
has static;
 
Cambiando il nome dell’oggetto come <ttcode>secondo pulsante</ttcode>, abbiamo risolto anche il secondo problema:
 
{| style="width:100%;" class="wikitable"
|<ttcode>Cabina dell'ascensore<br>
Sei nella cabina dell'ascensore.<br><br>
Puoi vedere un pannello di controllo con quattro tasti numerati da zero a tre.<br><br>
Riga 201:
Le porte si chiudono e la cabina si mette in movimento.<br>
Improvvisamente, le porte si aprono di nuovo.<br><br>
></ttcode>
|}
 
Riga 207:
 
{| style="width:100%;" class="wikitable"
|<ttcode>Cabina dell'ascensore<br>
Sei nella cabina dell'ascensore.<br><br>
Puoi vedere un pannello di controllo con quattro tasti numerati da zero a tre.<br><br>
Riga 213:
Le porte si chiudono e la cabina si mette in movimento.<br>
Improvvisamente, le porte si aprono di nuovo.<br><br>
></ttcode>
|}
 
Inform continua a eseguire il codice relativo all’azione <ttcode>Push</ttcode> associata (la stessa, cioè, dell’oggetto <ttcode>Pulsante_1</ttcode>). Per risolvere questo terzo problema, bisogna ricorrere a una soluzione drastica:
 
Object -> Pannello_controllo "secondo pulsante"
Riga 232:
has static;
 
Utilizzando la proprietà <ttcode>parse_name</ttcode> in questo modo, "obbligo" Inform a ignorare totalmente i nomi "<ttcode>pannello</ttcode>" e "<ttcode>controllo</ttcode>":
 
{| style="width:100%;" class="wikitable"
|<ttcode>Cabina dell'ascensore<br>
Sei nella cabina dell'ascensore.<br><br>
Puoi vedere un pannello di controllo con quattro tasti numerati da zero a tre.<br><br>
Riga 249:
Sei al primo piano.<br><br>
Puoi vedere delle porte scorrevoli qui.<br><br>
></ttcode>
|}