Inform e Glulx/Inform e ancora Inform/I mezzi di trasporto

Indice del libro

I mezzi di trasporto

modifica

Lasciamo ora da parte Ruins per esaminare l’esempio che segue:

MONTACARICHI
di Vincenzo Scarpa
Esempio di spostamento sopra un altro oggetto

Versione 1 -- Numero di serie 050425
Inform v6.30 -- Libreria 6/11  --  Infit v2.5    S

Basamento Ovest
Direzioni: sud, est

Puoi vedere un vecchio montacarichi spento qui.

>esamina il montacarichi
È tutto arrugginito.

>

Tutto quello che per ora riusciamo a capire, è che siamo in una stanza con un vecchio montacarichi a nostra disposizione. Proviamo allora a salirci sopra e ad accenderlo:

>sali sul montacarichi
Ti trovi sopra il montacarichi.

>accendi il montacarichi
Dopo un frastuono assordante, il montacarichi non si mette in moto. Forse dovresti riprovare...

>ancora
Dopo un frastuono assordante, il montacarichi non si mette in moto. Forse dovresti riprovare...

>ancora
Dopo un frastuono assordante, il montacarichi si mette in moto.

>g

Basamento Ovest (sopra il montacarichi)
Direzioni: sud, est

>

Dopo qualche tentativo, riusciamo nel nostro intento. Ora proviamo a spostarci:

>e
Il motore sbuffa e singhiozza...

Basamento Est (sopra il montacarichi)
Direzioni: ovest

Ci sono delle scale poco illuminate qui, che portano al piano superiore.

>su
Hai mai visto un montacarichi salire su una scala?

>

Come avete appena visto, in Inform ci si può spostare di stanza in stanza anche attraverso un mezzo di trasporto; inutile dire quanto questo possa essere di estrema utilità (provate, ad esempio, a immaginare una stanza piena di casse che nascondono un passaggio). Naturalmente, come tutti i mezzi di trasporto che si rispettino, è anche possibile spegnerlo:

>spegni il montacarichi
Il montacarichi si è spento. Non sei sicuro che riesca a mettersi di nuovo in moto.

>o
Non puoi andare da nessuna parte se il montacarichi è spento.

>

rendendo ovviamente impossibile qualsiasi ulteriore spostamento con esso (occorre accenderlo di nuovo, con tutte le difficoltà del caso). A questo punto, possiamo allora scendere per proseguire "a piedi":

>scendi dal montacarichi
Sei sceso dal montacarichi.

Basamento Est
Direzioni: ovest

Puoi vedere un vecchio montacarichi spento qui.

Ci sono delle scale poco illuminate qui, che portano al piano superiore.

>o

Basamento Ovest
Direzioni: sud, est

>

Interessante, vero? Vediamo allora la descrizione del montacarichi:

Object forklift "montacarichi" Aerobsm
  with name 'montacarichi' 'sollevatore', 
       describe [;
          print "^Puoi vedere un vecchio montacarichi ";
          if (self has on) "acceso qui.";
          "spento qui.";
           ], 
       before [;
          Climb: <<Enter self>>;
          Examine: print_ret "@`E tutto arrugginito.";
          Go: if (self has on) {
                   if ((noun == u_obj) && (location == Bse)) {
                       print "Hai mai visto un montacarichi salire su una 
                              scala?^"; 
                       return 2; ! Non si muove
                   } 
                   else {
                      print "Il motore sbuffa e singhiozza...^”;
                      return 1; ! Vai pure
                   }        
              }
              else { 
                 print "Non puoi andare da nessuna parte se il 
                        montacarichi @`e spento.^";
                 return 2;
              }
          SwitchOn: if (player in self) { 
                        if (self hasnt on) {
                           if (random(4)==2) {
                               give self on;
                               print "Dopo un frastuono assordante, il
                                      montacarichi si mette in moto.^";
                           }
                           else print "Dopo un frastuono assordante, il 
                                       montacarichi non si mette  in 
                                       moto. Forse dovresti 
                                       riprovare...^";
                        } 
                        else rfalse;
                    } 
                    else print "Senza salirci sopra? Forse sei un 
                                 telepate...^"; 
                    rtrue; 
           SwitchOff: if (player in self) {
                         if (self has on) {
                             give self ~on; 
                             print "Il montacarichi si @`e spento. Non
                                    sei sicuro che riesca a mettersi di 
                                    nuovo in moto.^"; 
                         }
                         else rfalse;
                     } 
                     else print "Prima devi salirci sopra.^";    
                     rtrue;  
           ], 
has supporter static enterable switchable ~on;

Le uniche novità, rispetto a quanto visto finora, sono i valori 1 e 2 che vengono ritornati col verbo Go. Il primo indica a Inform che il montacarichi può muoversi (nel nostro caso solo quando è acceso) mentre il secondo lo ferma (nel nostro caso quando è spento o se vogliamo salire sulle scale). L’istruzione random genera invece un numero casuale (in questo caso da 1 a 4) per rendere più "difficoltosa" l’accensione del mezzo [1].

  1. Cliccate qui per scaricare il listato di questo esercizio (il file 5.06.inf).