|
|
 |
|
 |
Foto sfondi vari temi |
 |
Foto sfondi Italia |
 |
Foto sfondi Europa |
 |
Foto sfondi Mondo |
|
Sei
qui:
Home
>
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.
|
| |