Inform e Glulx/RUINS, l'avventura comincia/La porta di pietra (gialla è più carina): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Gian BOT (discussione | contributi)
m Bot: sostituzione tag obsoleti
Gian BOT (discussione | contributi)
Riga 3:
 
==La porta di pietra (gialla è più carina)==
In Inform bisogna distinguere due tipi di oggetti: '''quelli che fungono da scenario, e quelli che fungono da contorno'''. Quelli che fungono da ''scenario'' (nel nostro caso <code>Forest</code>, <code>Square_Chamber</code>, <code>Corridor</code>) si riconoscono perché si richiamano tra di loro attraverso le istruzioni di direzione viste nel terzo paragrafo di questo capitolo. Questi oggetti non possono essere esaminati o manipolati dal giocatore e su di essi non si usa la proprietà <code>initial</code>.<br>
All’inizio del gioco, la prima cosa che appare è la descrizione della foresta:
 
<pre>>i
{| style="width:100%;" class="wikitable"
Il Grande Altopiano<br>
| <code>>i<br>
Il Grande Altopiano<br>
I tuoi appunti menzionano qualcosa circa questa bassa scarpata di calcare, ma la foresta pluviale ne ha rivendicato il possesso. Cupi ulivi crescono ovunque, e una pioggia appena smessa riempie l'aria con una calda nebbia bagnata.
La "Struttura 10" è un cumulo di materiali da costruzione, che una volta avrebbero potuto costituire una piramide sepolcrale, ma della quale ora nulla rimane, eccetto alcuni gradini scolpiti nella nuda roccia che portano giù, nell'oscurità.
</codepre>
|}
 
come è giusto che sia, la curiosità porta spesso a voler esaminare in dettaglio qualche oggetto citato, come ad esempio gli ulivi cupi:
 
| <codepre>>esamina gli ulivi cupi<br>
{| style="width:100%;" class="wikitable"
Non vedi nulla del genere.</code>
| <code>>esamina gli ulivi cupi<br>
</pre>
Non vedi nulla del genere.</code>
|}
 
ma la risposta non sembra essere delle migliori. Ora, dal momento che l’oggetto <code>Forest</code> funge da scenario, se vogliamo che Inform "veda" gli ulivi cupi dobbiamo definire un nuovo oggetto:
Line 31 ⟶ 29:
e a questo punto il problema è risolto<ref>Questo problema può essere risolto in maniera più efficace tramite l’utilizzo della libreria <code>scenic.h</code>, che dà la possibilità di attribuire a un oggetto dei nomi "scenici" che estendono la descrizione di default. Ulteriori informazioni sul suo utilizzo potete trovarle nel nono paragrafo del prossimo capitolo.</ref>:
 
| <codepre>>esamina gli ulivi cupi<br>
{| style="width:100%;" class="wikitable"
Potresti farci dell'ottimo olio d’oliva.</code>
| <code>>esamina gli ulivi cupi<br>
</pre>
Potresti farci dell'ottimo olio d’oliva.</code>
|}
 
Gli oggetti che fungono da ''contorno'', invece, possono appartenere a uno scenario o al giocatore stesso, e possono essere esaminati e manipolati da quest’ultimo (a meno che, ovviamente, non abbiano l’attributo <code>static</code> o <code>scenery</code>). Praticamente, quasi tutti quelli che abbiamo visto finora.
Line 102 ⟶ 99:
Per quanto riguarda la proprietà <code>describe</code>, il suo messaggio viene stampato sempre (mentre il messaggio della proprietà <code>initial</code> non viene più stampato una volta che l'oggetto è stato rimosso). Se ad esempio il giocatore si trova nel <code>Grande Altopiano</code> e posa la lampada accesa a terra, l’oggetto <code>sodium_lamp</code> viene rimosso dall’inventario e inserito nella locazione Forest. Se vogliamo quindi che Inform stampi a video il messaggio "<code>La lampada al sodio, posata a terra, si sta lentamente consumando.</code>", dobbiamo usare questa proprietà che ha, tra l’altro, la priorità su <code>initial</code>.
 
Per quanto riguarda invece l’azione <code>SwitchOn</code> (usata per stabilire quello che accade quando l’oggetto a cui si riferisce è acceso), dobbiamo dare un’occhiata a una particolare condizione if che le appartiene: <code>(parent(self) hasnt supporter && self notin location)</code><br>
Questo è un modo un po’ complicato per far sì che Inform si chieda se la lampada, quando deve essere accesa, si trovi nell’inventario del giocatore oppure no. L’istruzione <code>parent(self)</code> ci permette di sapere, in qualsiasi momento, chi è il "possessore" della lampada al sodio: se si trova nell’inventario il <code>parent</code> (che in inglese significa "genitore" e non "parente") è il giocatore, mentre se si trova in una locazione il <code>parent</code> è la locazione stessa. Quindi, se ci troviamo ad esempio nel <code>Grande Altopiano</code> e posiamo la lampada a terra, il <code>parent</code> di quest’ultima sarà l’oggetto <code>Forest</code>.