Vai al contenuto

Inform e Glulx/Inform e ancora Inform/I labirinti e i nomi plurali

Wikibooks, manuali e libri di testo liberi.
Indice del libro

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.

  1. Cliccate qui per scaricare i listati di questi esercizi (i file 5.03_1.inf e 5.03_2.inf).