Inform e Glulx/RUINS, l'avventura comincia/Il primo tesoro (speriamo che non sia un anello): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Gian BOT (discussione | contributi)
m Bot: sostituzione tag obsoleti
Gian BOT (discussione | contributi)
Riga 1:
''Siete pronti a dirigervi verso sud, impazienti di vedere cosa nasconde l’imponente porta di pietra, ma c’è uno strano oggetto che attira la vostra attenzione: una statuetta minacciosa di uno spirito pigmeo, di aspetto quasi grottesco, che giace per terra alla vostra destra.''<br>
''Se non fosse per quel serpente intorno al collo, potreste usarla come soprammobile, ma decidete comunque di prenderla e riporla nella cassa, se non altro per non tornare a mani vuote da quelli della fondazione. Posate quindi a terra tutti gli oggetti che possedete, ad eccezione dell'elefantiaca macchina fotografica a lastre che sistemate invece accanto alla lampada al sodio. Mettete poi in posa la statuetta... et voilà, la foto è fatta. E mentre ritornate verso la superficie, vi chiedete quando inventeranno la Polaroid.''<br>
 
 
==Il primo tesoro (speriamo che non sia un anello)==
In Inform esiste la possibilità di creare delle azioni nuove. Quelle elencate nell’appendice A infatti, sono "solo" quelle standard ma se, come nel nostro caso, volessimo fotografare un oggetto?<br>
Come potete vedere, questo verbo non c’è, ed ecco perché proprio verso la fine del listato troviamo la seguente riga di codice:
 
Riga 28:
];
 
Se il giocatore non possiede la macchina fotografica (<code>camera notin player</code>) Inform stampa a video il messaggio corrispondente ("<code>Non puoi farlo senza la tua macchina fotografica.</code>"); se prova invece a fotografare se stesso ("<code>fotografa me stesso</code>") viene stampato a video il messaggio "<code>Meglio di no. Non ti sei fatto la barba da quando hai lasciato il Messico.</code>", un pizzico di umorismo che mette però in risalto un’altra importante caratteristica di Inform: il <code>player</code>.<br>
Esso infatti, viene considerato come un oggetto vero e proprio, che di default ha la seguente descrizione:
 
<pre>>esamina me stesso
{| style="width:100%;" class="wikitable"
Hai sempre lo stesso bell'aspetto.
|<code>>esamina me stesso<br>
</pre>
Hai sempre lo stesso bell'aspetto.</code>
|}
 
Se poi il giocatore possiede più di un oggetto (<code>children(player) > 1</code>), ecco che diventa impossibile fare delle fotografie. I <code>children</code> (in inglese "bambini" o "figli") del <code>player</code> sono proprio tutti gli oggetti che lui possiede. E se avete capito la descrizione della lampada al sodio, dovreste già sapere che gli oggetti del <code>player</code> hanno come <code>parent</code> il player stesso. Chiaro, no?
Line 56 ⟶ 55:
ottenendo così il seguente risultato:
 
<pre>>esamina me stesso
{| style="width:100%;" class="wikitable"
Assomigli proprio a Matusalemme.
|<code>>esamina me stesso<br>
</pre>
Assomigli proprio a Matusalemme.</code>
|}
 
Volendo, è perfino possibile aggiungere delle parti del corpo:
Line 67 ⟶ 65:
.
Object tiny_claws "suono di piccoli artigli" thedark...
<br>
Object nose "naso"
with name 'naso',
description
"A punta e pieno di lentiggini.";
<br>
[ Initialise;
location = Forest;
Line 90 ⟶ 88:
In questo esempio abbiamo definito il naso. Di per sé, l’oggetto nose non ha nulla di particolare, mentre la riga <code>selfobj.add_to_scope = nose;</code> contenuta nella funzione <code>Initialise</code> è quella che dice a Inform di assegnare l’oggetto in questione al <code>player</code> (<code>selfobj</code>). Il risultato che si ottiene è il seguente:
 
<pre>>esamina il mio naso
{| style="width:100%;" class="wikitable"
A punta e pieno di lentiggini.
|<code>>esamina il mio naso<br>
</pre>
A punta e pieno di lentiggini.</code>
|}
 
Nel caso in cui si vogliano aggiungere più parti del corpo, si deve allora ricorrere al seguente stratagemma:
Line 101 ⟶ 98:
.
Object tiny_claws "suono di piccoli artigli" thedark...
<br>
Object nose "naso"
with name 'naso',
description
"A punta e pieno di lentiggini.";
<br>
Object hair "capelli"
with name 'capelli' 'capello',
description
"Li hai persi tutti quando eri piccolo.";
<br>
[ IncludeBodyParts; PlaceInScope(nose); PlaceInScope(hair); ];
<br>
[ Initialise;
location = Forest;
Line 131 ⟶ 128:
Quella che viene adesso associata al <code>player</code> è l’intera funzione <code>IncludeBodyParts</code> al cui interno vengono resi visibili, tramite l’istruzione <code>PlaceInScope</code>, il naso e i capelli. Ecco allora il risultato:
 
<pre>>esamina i miei capelli
{| style="width:100%;" class="wikitable"
Li hai persi tutti quando eri piccolo.
|<code>>esamina i miei capelli<br>
 
Li hai persi tutti quando eri piccolo.<br><br>
>esamina il mio naso<br>
A punta e pieno di lentiggini.
</codepre>
|}
 
Provare per credere.
Line 143 ⟶ 140:
 
[ XyzzySub; "Non succede nulla."; ];
<br>
Verb "xyzzy" * -> Xyzzy;
 
Line 187 ⟶ 184:
La variabile locale <code>photographed_in_situ</code> vale inizialmente <code>false</code>. Quando il giocatore riesce in qualche modo a fotografare la statuetta, il valore della variabile diventa <code>true</code>. Ora, se omettiamo la riga di codice relativa alla <code>AfterRoutines()</code> in <code>PhotographSub</code>, ecco cosa accade:
 
<pre>Corridoio in pendenza
{| style="width:100%;" class="wikitable"
Un corridoio basso e squadrato va da nord verso sud, inclinandosi verso la fine.
|<code>Corridoio in pendenza<br>
 
Un corridoio basso e squadrato va da nord verso sud, inclinandosi verso la fine.<br><br>
Il passaggio è bloccato da una massiccia porta di pietra gialla.<br><br>
 
C'è una preziosa statuetta maya qui!<br><br>
>prendiC'è launa preziosa statuetta<br> maya qui!
 
Questi sono gli anni '30 e non i tempi andati. Prendere un manufatto senza prima registrarlo equivale a un saccheggio.<br><br>
>fotografaprendi la statuetta<br>
Questi sono gli anni '30 e non i tempi andati. Prendere un manufatto senza prima registrarlo equivale a un saccheggio.
Fare fotografie è una cosa impegnativa, che necessita dell'uso di entrambe le mani. Devi posare qualcosa.<br><br>
 
>posa tutto eccetto la macchina<br>
>fotografa la statuetta
chiave di pietra: Posata.<br>
Fare fotografie è una cosa impegnativa, che necessita dell'uso di entrambe le mani. Devi posare qualcosa.
dizionario maya di Waldeck: Posato.<br>
 
mappa di Quintana Roo: Posata.<br><br>
>posa tutto eccetto la macchina
>fotografa la statuetta<br>
chiave di pietra: Posata.
Prepari l'elefantiaca macchina fotografica a lastre, sistemi la lampada al sodio e metti pazientemente in posa la statuetta pigmea.<br><br>
dizionario maya di Waldeck: Posato.
>prendi la statuetta<br>
mappa di Quintana Roo: Posata.
Questi sono gli anni '30 e non i tempi andati. Prendere un manufatto senza prima registrarlo equivale a un saccheggio.</code>
 
|}
>fotografa la statuetta
Prepari l'elefantiaca macchina fotografica a lastre, sistemi la lampada al sodio e metti pazientemente in posa la statuetta pigmea.
 
>prendi la statuetta
Questi sono gli anni '30 e non i tempi andati. Prendere un manufatto senza prima registrarlo equivale a un saccheggio.
</pre>
 
Nonostante la statuetta sia stata fotografata, non si può ancora prendere. Ecco quindi spiegato il motivo della presenza della <code>AfterRoutines</code>: senza, viene ignorata l’azione <code>Photograph</code> della proprietà <code>after</code> dell’oggetto <code>statuette</code>, la variabile locale <code>photographed_in_situ</code> continua a valere <code>false</code> e di conseguenza la statuetta continua a non poter essere fotografata (e a non poter essere presa dal giocatore)<ref>Cliccate [http://www.vincenzoscarpa.it/inform/manuale/Capitolo4_esercizi.zip qui] per scaricare il listato di questo esercizio (il file '''4.07.inf''').</ref>.
Line 261 ⟶ 264:
Constant NUMBER_TASKS = 2;
Constant MAX_SCORE = 30;
<br>
Array task_scores -> 5 10;
 
Line 300 ⟶ 303:
Vediamo allora in pratica quanto è stato appena detto:
 
<pre>>prendi il fungo
{| style="width:100%;" class="wikitable"
Hai raccolto abilmente il fungo, senza staccarlo dal suo gambo sottile.
|<code>>prendi il fungo<br>
 
Hai raccolto abilmente il fungo, senza staccarlo dal suo gambo sottile.<br><br>
>mangia il fungo<br>
Lo sgranocchi ad un angolo, incapace di capire l'origine di un gusto così acre, distratto dal volo di un macao sopra la tua testa che sembra quasi un'esplosione nel sole. Il battito delle sue ali è quasi assordante, e delle pietre crollano una sull'altra.<br><br>
 
[Il tuo punteggio è appena aumentato di cinque punti.]<br><br>
[Il tuo punteggio è appena aumentato di cinque punti.]
>giù<br><br>
 
La Sala Quadrata<br>
>giù
Sei in una sala di pietra oscura e profonda, larga circa dieci metri. Un raggio di sole, proveniente dalla cima della scalinata, la illumina diffusamente, ma le ombre del livello più basso rivelano dei passaggi verso est e sud, che conducono verso la più profonda oscurità del Tempio.<br><br>
 
Delle iscrizioni scolpite riempiono le pareti, il pavimento e il soffitto.<br><br>
La Sala Quadrata
>e<br><br>
Sei in una sala di pietra oscura e profonda, larga circa dieci metri. Un raggio di sole, proveniente dalla cima della scalinata, la illumina diffusamente, ma le ombre del livello più basso rivelano dei passaggi verso est e sud, che conducono verso la più profonda oscurità del Tempio.
Tana Del Verme<br>
 
Un groviglio di cunicoli disordinati come una ragnatela si dirige verso le fessure tra le pietre. I soli abbastanza larghi da poterci strisciare dentro sono quelli che si dirigono verso l'alto, a nordest e a sud.<br><br>
Delle iscrizioni scolpite riempiono le pareti, il pavimento e il soffitto.
Un bozzolo bianco e scintillante, grande come un pallone da spiaggia, è appiccicato alla fessura di una parete.<br><br>
 
>prendi il bozzolo<br>
>e
Bleah!<br><br>
 
>o<br><br>
Tana Del Verme
La Sala Quadrata<br><br>
Un groviglio di cunicoli disordinati come una ragnatela si dirige verso le fessure tra le pietre. I soli abbastanza larghi da poterci strisciare dentro sono quelli che si dirigono verso l'alto, a nordest e a sud.
Delle iscrizioni scolpite riempiono le pareti, il pavimento e il soffitto.<br><br>
 
>posa il bozzolo nel raggio<br>
Un bozzolo bianco e scintillante, grande come un pallone da spiaggia, è appiccicato alla fessura di una parete.
Lasci cadere il bozzolo nel bagliore solare. Ribolle oscenamente, si dilata e poi scoppia. Centinaia di piccoli insetti corrono in tutte le direzioni nell'oscurità; gli spruzzi di melma e una curiosa chiave di pietra gialla sono tutto ciò che rimane sul pavimento.<br><br>
 
[Il tuo punteggio è appena aumentato di dieci punti.]<br><br>
>prendi il bozzolo
>punteggio<br>
Bleah!
Finora hai totalizzato 15 punti su 30 possibili, in 8 turni, guadagnando il rango di Rigattiere.<br><br>
 
></code>
>o
|}
 
La Sala Quadrata
 
Delle iscrizioni scolpite riempiono le pareti, il pavimento e il soffitto.
 
>posa il bozzolo nel raggio
Lasci cadere il bozzolo nel bagliore solare. Ribolle oscenamente, si dilata e poi scoppia. Centinaia di piccoli insetti corrono in tutte le direzioni nell'oscurità; gli spruzzi di melma e una curiosa chiave di pietra gialla sono tutto ciò che rimane sul pavimento.
 
[Il tuo punteggio è appena aumentato di dieci punti.]
 
>punteggio
Finora hai totalizzato 15 punti su 30 possibili, in 8 turni, guadagnando il rango di Rigattiere.
 
>
</pre>
 
Bisogna anche considerare, come dice lo stesso Paolo Lucchesi, la ''modalità a punteggio pieno'', dove è necessario inserire la funzione di libreria <code>PrintTaskName</code>:
Line 346 ⟶ 364:
In poche parole, se il giocatore ha mangiato il fungo e ha posato il bozzolo nel raggio di sole, ecco cosa stampa a video Inform con il comando "<code>punteggio pieno</code>":
 
<pre>>punteggio pieno
{| style="width:100%;" class="wikitable"
Finora hai totalizzato 15 punti su 30 possibili, in 8 turni, guadagnando il rango di Rigattiere.
|<code>>punteggio pieno<br>
 
Finora hai totalizzato 15 punti su 30 possibili, in 8 turni, guadagnando il rango di Rigattiere.<br><br>
Il punteggio è così composto:<br><br>
 
&nbsp;&nbsp;&nbsp;&nbsp;5 hai mangiato il fungo<br>
&nbsp;&nbsp;&nbsp;10&nbsp;5 hai trovatomangiato lail chiave di pietra<br><br>fungo
&nbsp;&nbsp;&nbsp;1510 inhai totaletrovato (sula 30chiave possibili)<br><br>di pietra
 
></code>
&nbsp;&nbsp;&nbsp;15 in totale (su 30 possibili)
|}
 
>
</pre>
 
A ogni modo, non siete obbligati a supportare questa funzione nella gestione del punteggio in modalità completa; se il giocatore, durante il gioco, dà questo comando senza che la funzione <code>PrintTaskName</code> sia stata implementata, Inform stampa a video lo stesso messaggio previsto per il comando "<code>punteggio</code>".
Line 368 ⟶ 389:
.
Replace TaskScore;
<br>
Constant MAX_CARRIED = 7;
Constant TASKS_PROVIDED;
Constant NUMBER_TASKS = 2;
Constant MAX_SCORE = 30;
<br>
Array task_scores --> 10 (-5);
 
Line 382 ⟶ 403:
.
[ PrintRank;...
<br>
[ TaskScore i; return task_scores-->i; ];
 
Ecco fatto. Ora potete sia punire che premiare il giocatore a seconda dell’azione da lui effettuata:
 
<pre>>prendi il fungo
{| style="width:100%;" class="wikitable"
Hai raccolto abilmente il fungo, senza staccarlo dal suo gambo sottile.
|<code>>prendi il fungo<br>
 
Hai raccolto abilmente il fungo, senza staccarlo dal suo gambo sottile.<br><br>
>mangia il fungo<br>
Lo sgranocchi ad un angolo, incapace di capire l'origine di un gusto così acre, distratto dal volo di un macao sopra la tua testa che sembra quasi un'esplosione nel sole. Il battito delle sue ali è quasi assordante, e delle pietre crollano una sull'altra.<br><br>
 
[Il tuo punteggio è appena aumentato di dieci punti.]<br><br>
[Il tuo punteggio è appena aumentato di dieci punti.]
>giù<br><br>
 
La Sala Quadrata<br>
>giù
Sei in una sala di pietra oscura e profonda, larga circa dieci metri. Un raggio di sole, proveniente dalla cima della scalinata, la illumina diffusamente, ma le ombre del livello più basso rivelano dei passaggi verso est e sud, che conducono verso la più profonda oscurità del Tempio.<br><br>
 
Delle iscrizioni scolpite riempiono le pareti, il pavimento e il soffitto.<br><br>
La Sala Quadrata
>e<br><br>
Sei in una sala di pietra oscura e profonda, larga circa dieci metri. Un raggio di sole, proveniente dalla cima della scalinata, la illumina diffusamente, ma le ombre del livello più basso rivelano dei passaggi verso est e sud, che conducono verso la più profonda oscurità del Tempio.
Tana Del Verme<br>
 
Un groviglio di cunicoli disordinati come una ragnatela si dirige verso le fessure tra le pietre. I soli abbastanza larghi da poterci strisciare dentro sono quelli che si dirigono verso l'alto, a nordest e a sud.<br><br>
Delle iscrizioni scolpite riempiono le pareti, il pavimento e il soffitto.
Un bozzolo bianco e scintillante, grande come un pallone da spiaggia, è appiccicato alla fessura di una parete.<br><br>
 
>prendi il bozzolo<br>
>e
Bleah!<br><br>
 
>o<br><br>
Tana Del Verme
La Sala Quadrata<br><br>
Un groviglio di cunicoli disordinati come una ragnatela si dirige verso le fessure tra le pietre. I soli abbastanza larghi da poterci strisciare dentro sono quelli che si dirigono verso l'alto, a nordest e a sud.
Delle iscrizioni scolpite riempiono le pareti, il pavimento e il soffitto.<br><br>
 
>posa il bozzolo nel raggio<br>
Un bozzolo bianco e scintillante, grande come un pallone da spiaggia, è appiccicato alla fessura di una parete.
Lasci cadere il bozzolo nel bagliore solare. Ribolle oscenamente, si dilata e poi scoppia. Centinaia di piccoli insetti corrono in tutte le direzioni nell'oscurità; gli spruzzi di melma e una curiosa chiave di pietra gialla sono tutto ciò che rimane sul pavimento.<br><br>
 
[Il tuo punteggio è appena diminuito di cinque punti.]<br><br>
>prendi il bozzolo
></code>
Bleah!
|}
 
>o
 
La Sala Quadrata
 
Delle iscrizioni scolpite riempiono le pareti, il pavimento e il soffitto.
 
>posa il bozzolo nel raggio
Lasci cadere il bozzolo nel bagliore solare. Ribolle oscenamente, si dilata e poi scoppia. Centinaia di piccoli insetti corrono in tutte le direzioni nell'oscurità; gli spruzzi di melma e una curiosa chiave di pietra gialla sono tutto ciò che rimane sul pavimento.
 
[Il tuo punteggio è appena diminuito di cinque punti.]
 
>
</pre>
 
Supponendo per assurdo che il bozzolo debba in qualche modo rimanere intatto, se il giocatore lo lascia cadere nel bagliore solare il punteggio viene diminuito di 5 punti.
Line 424 ⟶ 459:
Traduzione e adattamenti di Vincenzo Scarpa e Raffaello
Valesio (c) 2002-2003 su permesso dell'autore.^^";
<br>
Constant MAX_CARRIED = 7;
Constant NO_SCORE;