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


Come funziona Idra

Appendice B

1

L'idea di Idra

5

Lo stato precedente

2

Perché JavaScript?

6

Il debugger

3

Struttura di Idra

7

Possibili migliorie

4

Salvataggio e ripristino

 

 

 

Salvataggio e ripristino

La situazione da registrare su disco consiste nei valori di tutte le variabili di gioco, ossia le proprietà della variabile v, più naturalmente la pagina corrente e lo stato del generatore di numeri pseudocasuali; quest'ultimo dato è necessario per evitare che la situazione possa cambiare salvando e ricaricando il gioco (addirittura la pagina potrebbe presentare scelte diverse, se esse dipendessero da un numero estratto a caso).

Per rendere ripristinabile lo stato del generatore pseudocasuale, ho dovuto sostituire quello di JavaScript (Math.random()) con la funzione caso() che impiega il semplice algoritmo di molti sistemi Unix; essa è a sua volta chiamata dalla dado() messa a disposizione dell'autore.

La creaStringaStato() ha il compito di 'impacchettare' tutte le informazioni, incluso il nome della pagina corrente, in un'unica stringa che riassume lo stato corrente del racconto-gioco; eventuali stringhe contenute nelle variabili vengono messe tra virgolette, mentre le virgolette contenute nelle stringhe sono sostituite dalla sequenza \" per evitare interferenze. Il risultato è una stringa di questo tipo:

v.inv=1;v.lupi=16;v.capr=2;v.uova=0;v._qui_="P11";v._caso_=271568720

La funzione registraCookie() codifica ulteriormente la stringa con la escape() per evitare la presenza di caratteri non ammessi, come ad esempio i segni di interpunzione; vi aggiunge poi il nome e la data di scadenza e salva il tutto in un cookie, se le circostanze lo permettono. Il cookie conterrà una stringa del genere:

v.inv%3D0%3Bv.lupi%3D0%3Bv.capr%3D2%3Bv.uova%3D0%3Bv._qui_%3D%22P11%22%3Bv._caso_%3D271568720%3B

Vi è qui una certa inefficienza dovuta alla codifica, che potrebbe eliminata con un'elaborazione preliminare per togliere i v. e i simboli (= ;); questa organizzazione della stringa ha comunque il vantaggio di poter ripristinare lo stato del sistema con una semplice eval(), come fa appunto la ripristinaStato().

Infine, nel caso di problemi con i cookie (che possono ad esempio essere disabilitati per scelta del lettore) Idra salva lo stato nella variabile situazioneSalvata: ciò non consente di conservarlo se si esce dal browser, ma lo si può comunque recuperare nell'ambito della stessa sessione, cioè se non si è usciti dal racconto-gioco. È ad esempio possibile salvare prima di fare una scelta rischiosa, per poi riprendere dallo stesso punto nel caso che sia andata male.