Inform e Glulx/Inform e ancora Inform/I labirinti e i nomi plurali
I labirinti e i nomi plurali
[modifica | modifica sorgente]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. Delle iscrizioni scolpite riempiono le pareti, il pavimento e il soffitto. >n Labirinto Sei in un labirinto di piccoli passaggi tutti uguali. >n Labirinto >ne Labirinto >o Labirinto Sei in un labirinto di stretti passaggi, tutti uguali. >
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 Delle iscrizioni scolpite riempiono le pareti, il pavimento e il soffitto. >n Labirinto Sei in un labirinto di piccoli passaggi tutti uguali. >o Labirinto Sei in un labirinto di stretti passaggi, tutti uguali. >n Labirinto Sei in un labirinto di tortuosi passaggi, tutti uguali. Puoi vedere due lingotti qui. >prendi un lingotto Preso. >g Labirinto Sei in un labirinto di tortuosi passaggi, tutti uguali. Puoi vedere un lingotto qui. >i Stai portando: un lingotto un dizionario maya di Waldeck una lampada al sodio la mappa di Quintana Roo >prendi un lingotto Preso. >i Stai portando: due lingotti un dizionario maya di Waldeck una lampada al sodio la mappa di Quintana Roo
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. Puoi vedere due lingotti qui. >prendi i lingotti lingotto: Preso. lingotto: Preso. >posa i lingotti lingotto: Posato. lingotto: Posato. >prendi il lingotto Preso. >
In poche parole, senza quel nome il giocatore non può chiamarlo al plurale:
Labirinto Sei in un labirinto di tortuosi passaggi, tutti uguali. Puoi vedere due lingotti qui. >prendi i lingotti Non vedi nulla del genere. >prendi il lingotto Preso. >g Labirinto Sei in un labirinto di tortuosi passaggi, tutti uguali. Puoi vedere un lingotto qui. >
con tutte le conseguenze del caso.
Note
[modifica | modifica sorgente]