Inform e Glulx/Inform e ancora Inform/I labirinti e i nomi plurali
Wikibooks, manuali e libri di testo liberi.
[modifica] I labirinti e i nomi plurali
Per quanto riguarda i labirinti, altro tema molto caro e dibattuto nell’ambito delle avventure testuali, ecco una delle possibili implementazioni all’interno di Ruins:
Object Square_Chamber "La Sala Quadrata"... . . . Object -> sunlight "raggio di sole"...
Class Maze with short_name "Labirinto", out_to "Sembra facile, vero?", has light;
Maze Inner1_Web with describe "Sei in un labirinto di piccoli passaggi tutti uguali.", w_to Inner2_Web, s_to Square_Chamber, n_to Inner1_Web, e_to Inner1_Web, nw_to Inner1_Web, ne_to Inner1_Web, sw_to Inner1_Web, se_to Inner1_Web;
Maze Inner2_Web with describe "Sei in un labirinto di stretti passaggi, tutti uguali.", n_to Inner3_Web, e_to Inner1_Web, w_to Inner2_Web, s_to Inner2_Web, nw_to Inner2_Web, sw_to Inner2_Web, ne_to Inner2_Web, se_to Inner2_Web;
Maze Inner3_Web with describe "Sei in un labirinto di tortuosi passaggi, tutti uguali.", s_to Inner2_Web, n_to Inner3_Web, w_to Inner3_Web, e_to Inner3_Web, nw_to Inner3_Web, sw_to Inner3_Web, ne_to Inner3_Web, se_to Inner3_Web;
La prima cosa che possiamo subito notare è che questo è un labirinto a tre livelli o, per dirla in parole più semplici, a tre stanze. Come potete però facilmente osservare, quasi tutte le direzioni puntano alle locazioni di appartenenza. Nella locazione Inner1_Web, ad esempio, il giocatore cambia stanza solo se si dirige o a sud (ritornando nella Sala Quadrata), oppure procedendo verso ovest (spostandosi alla locazione Inner2_Web, il secondo livello del labirinto). Se cerca invece di andare in tutte le altre direzioni, rimane sempre lì dov’è:
| La Sala Quadrata 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. Un passaggio, stretto e illuminato conduce a nord. |
Questo "trucco" fa sì che il giocatore abbia l’impressione di trovarsi in una miriade di stanze (un labirinto appunto). Ma occorre anche notare un’altra cosa: come mai le due locazioni si chiamano entrambe Labirinto anziché Inner1_Web e Inner2_Web?
Il merito va attribuito all’istruzione short_name della classe Maze. In poche parole, i nomi di tutte le locazioni appartenenti a questa classe vengono stampati a video con la scritta Labirinto; tuttavia, a livello di codice restano sempre gli stessi:
Object Square_Chamber "La Sala Quadrata"
with name 'sala' 'quadrata' 'architrave' 'architravi' 'est' 'sud'
'entrata',
description
"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@`u basso rivelano dei passaggi verso est e sud, che
conducono verso la pi@`u profonda oscurit@`a del Tempio.
Un passaggio, stretto e illuminato conduce a nord.",
u_to Forest,
n_to Inner1_Web,
.
.
.
Approfittiamo di questo esempio per introdurre altre peculiarità molto interessanti di questo linguaggio[1]:
Class Maze...
Class Bar with name 'lingotto' 'lingotti//p', article "un", plural "lingotti", description "A prima vista sembra essere d'oro, ma osservandolo meglio scopri che @`e di ottone.";
Maze Inner1_Web...
Maze Inner2_Web...
Maze Inner3_Web...
Bar "lingotto" Inner3_web; Bar "lingotto" Inner3_web;
Così facendo, se il giocatore riesce a raggiungere il terzo livello del labirinto trova due lingotti (apparentemente d’oro):
| La Sala Quadrata 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. A nord, una stretta e illuminata fenditura nella roccia funge da entrata |
Per Inform ogni lingotto è un oggetto a sé stante, e questo è possibile grazie all’istruzione bar "lingotto" Inner3_web ripetuta due volte. È chiaro allora che per avere n lingotti bisogna ripetere n volte questa istruzione. All’interno della classe Bar, l’unica vera novità è il nome 'lingotti//p', un modo per dire a Inform che l’oggetto in questione può essere chiamato al singolare (lingotto) o al plurale (lingotti):
| Labirinto Sei in un labirinto di tortuosi passaggi, tutti uguali. |
In poche parole, senza quel nome il giocatore non può chiamarlo al plurale:
| Labirinto Sei in un labirinto di tortuosi passaggi, tutti uguali. |
con tutte le conseguenze del caso.
[modifica] Note