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]