I D R A
Ipertesto Dinamico per Racconti d'Avventura

Manuale dell'autore
rev 1.0, © 2000 Enrico Colombini

 

qui puoi scaricare IDRA con il manuale

qui puoi visitare il sito ufficiale dell'autore Enrico Colombini con esempi e giochi scaricabili


Programmazione JavaScript

CAP 5

1

Testo variabile

5

Aggiornare una pagina

2

Testo condizionale

6

Problemi con la riesecuzione

3

Alternative

7

Casualità e dado

4

Istruzioni nelle scelte

 

 

 

Problemi con la riesecuzione

Quando una pagina viene riscritta per effetto della funzione aggiorna, è importante ricordare che la funzione della pagina viene nuovamente eseguita; ciò può comportare degli inconvenienti, come in questo caso:

function Anello() {
titolo("Scoperta")
testo("Complimenti, hai trovato il quarto dei 7 anelli perduti!")
v.punti += 20; // guadagna 20 punti --- attenzione! ---
...
}

In questo caso c'è un potenziale errore nell'istruzione:

v.punti += 20 //(v.punti = v.punti + 20)

Se infatti una delle scelte contenesse l'istruzione aggiorna(), alla variabile v.punti verrebbe aggiunto 20 ogni volta che la pagina fosse riscritta, il che non è ovviamente il comportamento desiderato.

A questo problema ci sono varie soluzioni, la più semplice delle quali consiste nell'assegnare i punti nella scelta che porta a questa pagina, così:

scelta("Decidi di aprire il piccolo scrigno", "v.punti += 20; vai(Anello)")

In questo caso la pagina Anello() non contiene alcuna istruzione che aumenta i punti, quindi può essere rieseguita senza problemi. Una tecnica più complessa, utile in altre situazioni, è quella di usare una variabile per evitare di rieseguire delle istruzioni:

if (! v.trovatoAnello) {
v.punti += 20
v.trovatoAnello = 1
}

Le istruzioni tra parentesi graffe verranno eseguite una sola volta, indipendentemente dal numero di riscritture della pagina, perché alla prima esecuzione la variabile v.trovatoAnello viene impostata a 1 e impedisce (per mezzo della if) una successiva riesecuzione delle stesse istruzioni.