INITFI40.AWS è il nuovo file iniziale di
AWS, l’editor/player di giochi di avventura testuali o
interactive fiction (IF). Contiene, come il vecchio INITFI30, un
dizionario di base, i messaggi di sistema e le condizioni a
bassa priorità per gestire il movimento, le azioni prendi e
lascia e quelle di esamina. Tralasciamo il dizionario, che
potete migliorare a vostro piacimento inserendo tutti i nomi,
verbi, aggettivi che volete in modo da averlo quasi pronto per
ogni avventura che scriverete. Attenzione però al momento
storico. Mi spiego meglio: se inserite parole come stregone,
magia, mago, bacchetta magica e così via e poi scrivete
un’avventura ambientata su una nave spaziale, il giocatore si
sentirà spaesato nel vedere che il vostro gioco riconosce parole
che si riferiscono ad altro tipo di racconto.
Andiamo allora
ad analizzare le condizioni a bassa priorità, il vero
cambiamento rispetto alla versione precedente. Si trovano nella
sezione CONDIZIONILOW del file INITFI40.aws o
del file .aws che contiene la vostra avventura. Potete vederle
aprendo il file con un semplice editor di testi tipo il Blocco
Note di Windows o il TextEditor del Mac. Ecco il dettaglio:
CONDIZIONILOW
if verb 73 then quit endif
if verb 74 or
verb 0 and noun 72 then inve wait endif
if verb 987 then
restart endif
if verb 988 then save wait endif salva la
partita
if verb 989 then load wait endif carica la partita
if verb 110 then look wait endif
IF verb 100 OR vbnoeq 0 AND
noun 80 THEN nord WAIT ENDIF VAI NORD
IF verb 100 OR vbnoeq
0 AND noun 81 THEN nord WAIT ENDIF VAI SUD
IF verb 100 OR
vbnoeq 0 AND noun 82 THEN nord WAIT ENDIF VAI EST
IF verb 100
OR vbnoeq 0 AND noun 83 THEN nord WAIT ENDIF VAI OVEST
IF
verb 100 OR vbnoeq 0 AND noun 84 THEN nord WAIT ENDIF VAI ALTO
IF verb 100 OR vbnoeq 0 AND noun 85 THEN nord WAIT ENDIF VAI
BASSO
IF VERB prendi AND NO1LT MAXPRENDIBILI+1 THEN GET NO1
OKAY ENDIF
IF VERB posa AND NO1LT MAXPRENDIBILI+1 THEN DROP
NO1 OKAY ENDIF
IF VERB esamina and NO1LT MAXOGGETTI+1 and
AVAI NO1 THEN mess NO1 WAIT ENDIF
IF VERB esamina and NO1LT
MAXOGGETTI+1 THEN mess 1053 ("Non ne vedo") WAIT ENDIF
Analizziamo le varie parti:
if verb 73 then quit endif
if verb 74 or verb 0 and noun 72 then inve wait endif
if verb
987 then restart endif
if verb 988 then save wait endif salva
la partita
if verb 989 then load wait endif carica la partita
if verb 110 then look wait endif
Questo blocco contiene
le azioni relative a comandi quali quit (smetti di giocare),
mostra inventario o solo inventario, restart (ricomincia a
giocare), save (salva la partita), load (carica la partita) e
look (guarda).
I veri cambiamenti arrivano adesso.
Analizziamo il secondo blocco:
IF verb 100 OR vbnoeq 0 AND noun 80
THEN nord WAIT ENDIF VAI NORD
IF verb 100 OR vbnoeq 0 AND
noun 81 THEN nord WAIT ENDIF VAI SUD
IF verb 100 OR vbnoeq 0
AND noun 82 THEN nord WAIT ENDIF VAI EST
IF verb 100 OR
vbnoeq 0 AND noun 83 THEN nord WAIT ENDIF VAI OVEST
IF verb
100 OR vbnoeq 0 AND noun 84 THEN nord WAIT ENDIF VAI ALTO
IF
verb 100 OR vbnoeq 0 AND noun 85 THEN nord WAIT ENDIF VAI BASSO
Possiamo notare che ora le direzioni
(n, s, e, o, alto, basso) sono nomi e non più verbi, come in
INITFI30.AWS. In questo modo si può scrivere sia NORD che VAI A
NORD.
Si potrebbe evolvere ulteriormente inserendo nel
dizionario i verbi:
100 = cammina (già presente)
100 =
corri
100 = vai
204=muovi
303=muoviti
184=sali
185=scendi
Poi modifichiamo le condizioni così:
IF VERB 100 OR verb 204 OR verb 303 OR
VBNOEQ 0 AND NOUN 80 THEN NORD WAIT ENDIF
IF verb 100 OR
verb 204 OR verb 303 OR vbnoeq 0 AND noun 81 THEN sud WAIT ENDIF
VAI SUD
IF verb 100 OR verb 204 OR verb 303 OR vbnoeq 0 AND
noun 82 THEN est WAIT ENDIF VAI EST
IF verb 100 OR verb 204
OR verb 303 OR vbnoeq 0 AND noun 83 THEN ovest WAIT ENDIF VAI
OVEST
Così per spostarci possiamo scrivere:
cammina oppure corri oppure
vai oppure muovi oppure
muoviti a nord oppure solo nord
o qualsiasi altra direzione.
Stessa cosa per alto e basso:
IF verb 100 OR verb 204 OR verb 303 OR
vbnoeq 0 AND noun 84 THEN alto WAIT ENDIF
IF verb 100 OR verb
204 OR verb 303 OR vbnoeq 0 AND noun 85 THEN basso WAIT ENDIF
a cui però aggiungiamo:
IF noun 84 OR noun 0 AND verb 184
THEN alto WAIT ENDIF sali oppure sali
in alto
IF noun 85 OR noun 0 AND verb 185 THEN basso
WAIT ENDI scendi oppure scendi in basso
Nel file INITFI40.AWS abbiamo inserito una ulteriore
semplificazione delle condizioni. Si stabilisce il numero
massimo di oggetti prendibili (MAXPRENDIBILI) e
il numero totale di oggetti (MAXOGGETTI).
Queste informazioni sono ovviamente note nella fase di
scrittura.
Le azioni di prendere e posare un oggetto si
semplificano così:
IF VERB prendi AND NO1LT
MAXPRENDIBILI+1 THEN GET NO1 OKAY ENDIF
IF VERB posa AND
NO1LT MAXPRENDIBILI+1 THEN DROP NO1 OKAY ENDIF
Se l’oggetto è fra quelli numerati tra
1 e MAXPRENDIBILI, gli oggetti che si possono prendere, allora
si esegue l’azione di prendere l’oggetto di numero NO1 che è
proprio l’oggetto che abbiamo scritto e che ha, appunto, il
numero NO1. Stessa cosa per il verbo posa.
Le azioni di
esaminare un oggetto si semplificano invece così:
IF VERB esamina and NO1LT MAXOGGETTI+1
and AVAI NO1 THEN mess NO1 WAIT ENDIF
IF VERB esamina and
NO1LT MAXOGGETTI+1 THEN mess 1053 ("Non ne vedo") WAIT ENDIF
Notare come i messaggi di esamina hanno la
stessa numerazione dei nomi (mess NO1 vuol dire messaggio il cui
numero è pari al valore NO1).
Facciamo ora un esempio per
capire meglio. Ho sei oggetti di cui quattro prendibili:
1 |
spada |
2 |
torcia |
3 |
elmo |
4 |
scudo |
e due non prendibili:
Avremo MAXOGGETTI=6 e
MAXPRENDIBILI=4 perciò le
condizioni diventeranno:
IF VERB prendi AND NO1LT 5 THEN GET NO1
OKAY ENDIF
IF VERB posa AND NO1LT 5 THEN DROP NO1 OKAY ENDIF
IF VERB esamina and NO1LT 7 and AVAI NO1 THEN mess NO1 WAIT
ENDIF
IF VERB esamina and NO1LT 7 THEN mess 1053 WAIT ENDIF
Ovviamente i primi sei messaggi
saranno:
1 |
descrizione della spada |
2 |
descrizione della torcia |
3 |
descrizione dell'elmo |
4 |
descrizione dello scudo |
5 |
descrizione del cavallo |
6 |
descrizione dell'elefante
|
Quanto detto vale se l’oggetto è, appunto, un oggetto.
Considerate che lavorando in questo modo vi
risparmierete di scrivere tante condizioni low tipo queste:
IF verb 70 OR verb 208 AND noun 12 AND
avai 12 THEN mess 277 WAIT ENDIF ESAMINA/Leggi TACCUINO avai
TACCUINO
IF verb 70 OR verb 208 AND noun 12 THEN mess 279
WAIT ENDIF ESAMINA/Leggi TACCUINO not avai TACCUINO
Il
problema è leggermente diverso se
l’oggetto è nella descrizione di una locazione, tipo “Al
centro della stanza c’è un enorme altare”.
Le condizioni
da inserire (esamina/leggi oggetto) saranno Condizioni
Locali:
Loc xx (la locazione nella cui
descrizione è presente l’oggetto)
IF verb 70 OR verb 208 AND
noun 12 THEN mess xxx WAIT ENDIF leggi/esamina oggetto.
Se si può solo leggere o esaminare
allora togliere l’altro verbo. L’oggetto è, ovviamente,
presente.
Poi bisogna aggiungere una Condizione Low,
in caso si chieda di esaminare l’oggetto al di fuori della
locazione in cui è presente. Come avrete notato, nel caso di
oggetti “veri” si usa AVAI per vedere se sono disponibili. Qui
sappiamo che sono disponibili ma solo in una ben specifica
locazione.
CondizioniLow
IF verb 70 OR verb 208 AND
noun 12 THEN mess 278 “Non ne vedo in giro!” WAIT ENDIF
leggi/esamina oggetto. Se si può solo leggere o esaminare allora
togliere l’altro verbo. L’oggetto è, ovviamente, non presente.
Ecco un piccolo esempio tratto da Iunnuh 2, La
Maledizione che viene dal passato
Per le
condizioni LOCALI
loc 1
IF verb 70 AND noun 250 THEN
mess 310 WAIT ENDIF esamina fermata
IF verb 70 AND noun 252
THEN mess 315 WAIT ENDIF esamina ingresso
loc 14
IF
verb 70 AND noun 258 THEN mess 321 WAIT ENDIF esamina
biglietteria
IF noun 259 OR noun 252 AND verb 70 THEN mess
318 WAIT ENDIF esamina varco/accesso/i
IF verb 70 AND noun
261 THEN mess 319 WAIT ENDIF esamina sportello/i
IF verb 70
AND noun 296 THEN mess 320 WAIT ENDIF esamina biglietto/i
Per le condizioni LOW
IF verb 70 AND noun 250
THEN mess 278 WAIT ENDIF esamina fermata
IF verb 70 AND noun
252 THEN mess 368 WAIT ENDIF esamina ingresso
IF verb 70
AND noun 258 THEN mess 373 WAIT ENDIF esamina biglietteria
IF
noun 259 OR noun 252 AND verb 70 THEN mess 278 WAIT ENDIF
esamina varco/accesso/i
IF verb 70 AND noun 261 THEN mess 278
WAIT ENDIF esamina sportello/i
IF verb 70 AND noun 296 THEN
mess 278 WAIT ENDIF esamina biglietto/i