Inform e Glulx/Inform e ancora Inform/I mezzi di trasporto
I mezzi di trasporto
[modifica | modifica sorgente]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].
Note
[modifica | modifica sorgente]