Inform e Glulx/Inform e ancora Inform/Su e giù con l'ascensore: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: sostituzione tag obsoleti |
m Bot: corregge Tag annidati male |
||
Riga 2:
La gestione di un ascensore è un altro "classico" delle avventure testuali. Ecco allora come funziona l’esempio da me proposto:
<pre>Ascensore
Un semplice esempio che gestisce un ascensore a quattro piani
di Vincenzo Scarpa
Versione 1 -- Numero di serie 050704
Inform v6.30 -- Libreria 6/11 -- Infit v2.5 S
Sei al piano terra.
Puoi vedere delle porte scorrevoli qui.
>
</pre>
All’inizio abbiamo davanti a noi delle porte scorrevoli. Naturalmente, occorre aprirle per entrare poi nella cabina:
<pre>>esamina le porte
C'è un pulsante accanto alle porte.
>premi pulsante
Le porte si aprono silenziosamente.
>entra
Cabina dell'ascensore
Sei nella cabina dell'ascensore.
Puoi vedere un pannello di controllo con quattro tasti numerati da zero a tre.
>
</pre>
Eccoci dunque dentro la cabina del nostro ascensore. Se non soffrite di claustrofobia, potete allora decidere a quale piano andare premendo l’apposito pulsante:
<pre>>premi 2
Le porte si chiudono e la cabina si mette in movimento.
Improvvisamente, le porte si aprono di nuovo.
>esci
Non appena esci dall'ascensore, le porte scorrevoli si chiudono silenziosamente alle tue spalle.
Sei al secondo piano.
Puoi vedere delle porte scorrevoli qui.
>
</pre>
Una volta arrivati a destinazione, potete uscire dalla cabina quando volete, ricordandovi però di riaprire le porte se dovete usarla di nuovo:
<pre>>entra
Le porte sono ancora chiuse: credi forse di essere un fantasma?
>premi il pulsante
Le porte si aprono silenziosamente.
>entra
Cabina dell'ascensore
Sei nella cabina dell'ascensore.
Puoi vedere un pannello di controllo con quattro tasti numerati da zero a tre.
>
</pre>
A questo punto, il suo utilizzo dovrebbe ormai essere abbastanza chiaro. Occorre però ancora notare che, se il giocatore preme il tasto corrispondente al piano su cui si trova l’ascensore, non accade nulla:
<pre>>premi 2
Non accade nulla.
>
</pre>
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 <code>Muovi_cabina</code>:
Line 112 ⟶ 126:
[[Immagine:Inform_e_Glulx-514.gif|centre|235 px|]]
dove gli oggetti Y e Z appartengono all’oggetto X (e sono di conseguenza i '''child''' di X), mentre quest’ultimo è il '''parent''' di Y e Z. L’oggetto J è il '''sibling''' di Z (e non appartiene a X) ma anche ''parent'' di K e così via.
[[Immagine:Inform e Glulx-sp.gif|centre|435 px|]]
Line 128 ⟶ 142:
tutto sembra essere a posto. Tuttavia, quando il giocatore preme il pulsante 1:
<pre>Cabina dell'ascensore
Puoi vedere un pannello di controllo con tre tasti numerati come zero, uno e due.
>premi 1
(il pannello di controllo)
È fisso al suo posto.
>
</pre>
Inform assegna il nome <code>1</code> al <code>pannello di controllo</code> anziché all’oggetto <code>Pulsante_1</code>. 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 <code>Pannello_controllo</code>:
Line 165 ⟶ 181:
Agendo in questo modo, l’ascensore si può spostare al primo piano:
<pre>Cabina dell'ascensore
Puoi vedere un pannello di controllo con quattro tasti numerati da zero a tre.
>premi 1
(il pannello di controllo)
Le porte si chiudono e la cabina si mette in movimento.
Improvvisamente, le porte si aprono di nuovo.
>
</pre>
Come potete però vedere, prima che l’ascensore si sposti viene anche stampato il nome dell’oggetto, che non è ovviamente il pannello di controllo. Occorre allora fare una seconda modifica:
Line 193 ⟶ 211:
Cambiando il nome dell’oggetto come <code>secondo pulsante</code>, abbiamo risolto anche il secondo problema:
<pre>Cabina dell'ascensore
Puoi vedere un pannello di controllo con quattro tasti numerati da zero a tre.
>premi 1
(il secondo pulsante)
Le porte si chiudono e la cabina si mette in movimento.
Improvvisamente, le porte si aprono di nuovo.
>
</pre>
Rimane tuttavia un altro problema; se il giocatore prova a premere il pannello di controllo:
<pre>Cabina dell'ascensore
Puoi vedere un pannello di controllo con quattro tasti numerati da zero a tre.
>premi pannello
Le porte si chiudono e la cabina si mette in movimento.
Improvvisamente, le porte si aprono di nuovo.
>
</pre>
Inform continua a eseguire il codice relativo all’azione <code>Push</code> associata (la stessa, cioè, dell’oggetto <code>Pulsante_1</code>). Per risolvere questo terzo problema, bisogna ricorrere a una soluzione drastica:
Line 234 ⟶ 256:
Utilizzando la proprietà <code>parse_name</code> in questo modo, "obbligo" Inform a ignorare totalmente i nomi "<code>pannello</code>" e "<code>controllo</code>":
<pre>Cabina dell'ascensore
Puoi vedere un pannello di controllo con quattro tasti numerati da zero a tre.
>premi il pannello
Non vedi nulla del genere.
>premi 1
(il secondo pulsante)
Le porte si chiudono e la cabina si mette in movimento.
Improvvisamente, le porte si aprono di nuovo.
>esci Non appena esci dall'ascensore, le porte scorrevoli si chiudono silenziosamente alle tue spalle. Sei al primo piano.
Puoi vedere delle porte scorrevoli qui.
>
</pre>
Certo, la risposta di sistema non è delle migliori (il pannello di controllo infatti esiste, nonostante Inform affermi il contrario), ma d’altra parte non si può sempre avere tutto<ref>Cliccate [http://www.vincenzoscarpa.it/inform/manuale/Capitolo5_esercizi.zip qui] per scaricare il listato di questo esercizio (il file '''5.07.inf''').</ref>.
|