logo windoweb



Sei qui:Home > Struttura di Idra



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

OFFERTE AMAZON


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

Struttura di Idra

La scelta di usare il linguaggio stesso (cioè JavaScript) per definire il contenuto delle pagine e le operazioni sulle variabili di gioco semplifica sia il programma che il lavoro dell'autore.

L'alternativa, consistente nel definire un 'linguaggio autore', avrebbe comportato molto lavoro per un guadagno quantomeno dubbio; inoltre la precedente esperienza col Modulo Base mi aveva convinto della validità di un'impostazione ibrida di questo genere.

Ciasuna pagina del racconto diventa quindi una funzione JavaScript che disegna la pagina in un apposito frame, con la semplice aggiunta del meccanismo per passare da una pagina all'altra. I semplici link HTML non bastano, perché un clic su una scelta può anche comportare l'esecuzione di una serie di istruzioni.
Con riferimento al codice nel file idra.js, le funzioni rinvio() e scelta() ricordano quindi nell'array scelte[] l'azione desiderata (salto a una pagina, o istruzioni da eseguire) e predispongono un link HTML che, in risposta a un clic, chiami la funzione eseguiScelta() passandole il numero dell'azione corrispondente. Tralasciando un problema che vedremo tra breve, un clic su una scelta ha come effetto l'esecuzione di: eseguiScelta(4)
La eseguiScelta() consulta scelte[4] che contiene l'azione richiesta e, con l'aiuto della esegui(), ne esamina il tipo: se è una pagina la presenta usando la consueta vai(), altrimenti la considera codice da eseguire con la funzione eval() tipica dei linguaggi dinamici, che interpreta le istruzioni contenute in una stringa, ad esempio: eval("lire += 1000; vai(Edicola)")
L'unica complicazione in questo semplice ma efficiente meccanismo è causata dal pulsante "Indietro" del browser: se infatti il lettore potesse tornare indietro a piacimento, sarebbe impossibile garantire il corretto funzionamento del racconto-gioco (si dovrebbe memorizzare a ogni passo lo stato delle variabili per poterlo in seguito ripristinare, cosa impossibile a causa dei limiti di spazio nei salvataggi su disco).
Per evitare che il tutto possa finire in uno stato imprevisto a causa di queste operazioni, a ciascuna presentazione di pagina è assegnato un identificatore (idPagina), un semplice numero progressivo che viene anche scritto nei link dalle funzioni rinvio() e scelta(); in questo modo: eseguiScelta(23:4)
In caso di clic, la eseguiScelta() verifica per prima cosa che l'identificatore del link su cui il lettore ha fatto clic (23 nell'esempio) coincida con quello della pagina corrente. Se ciò non avviene, significa che la pagina rappresentata sul video non è quella creata da Idra, tpicamente perché il lettore ha premuto "Indietro" sul browser, per cui viene presentato un messaggio di errore e poi viene chiamata la funzione ridisegna() per mostrare nuovamente al lettore la pagina corretta.




CLICCA QUI ... PER CONSULTARE LA MAPPA SATELLITARE DEL GLOBO DI GOOGLE


Segnala un sito redazione@windoweb.it
© 1999-2014
Tutti i diritti riservati
Invia le tue foto o i documenti che vuoi pubblicare