Inform e Glulx/Inform e ancora Inform/I mezzi di trasporto
Wikibooks, manuali e libri di testo liberi.
[modifica] I mezzi di trasporto
Lasciamo ora da parte Ruins per esaminare l’esempio che segue:
| MONTACARICHI di Vincenzo Scarpa |
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. |
Dopo qualche tentativo, riusciamo nel nostro intento. Ora proviamo a spostarci:
| >e Il motore sbuffa e singhiozza... |
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. |
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. |
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].
[modifica] Note