// prologo un saluto alla comunità di ICGAT. vi osservo da qualche tempo. siete belli :) vorrei programmare anch'io un "mistero testuale". tutte le avventure di testo che mi sono piaciute raccontavano di misteri. penso che costruire una realtà immaginaria attraverso la logica di un calcolatore, sia una gioia indescrivibile. mi eccita l'idea di provarci. vorrei scrivere un'AT un po' diversa dal solito, e lasciare ad altri la libertà di usare e modificare a piacimento il mio codice, per crearne di nuove. // etica senza tempo ho provato INFORM (e il lavoro di Giovanni Riccardi, che ringrazio). nel piccolo della mia conoscenza tecnica, lo trovo accattivante; per certi versi frutto di genialità informatica, ovvero di hackeraggio e di tanta buona volontà e pazienza. però trovo più divertente fare da me. svilupperò la cosa nei ritagli di tempo... può diventare una buona sfida. sogno un'AT complessa e intelligente, priva di parser testuale, che possa essere giocata con un click. *priva di parser testuale*... sono convinto si possa fare. ci sto provando. eheh, è fantastico poter dire a se stessi: "ho un sacco di tempo x attività faticose non pagate", quando non lo si ha affatto. :) ultimamente sto lavorando prezzolato coi computer, e mi sembra di star barattando la passione per l'hacking con denaro fine a se stesso. certo, mi sono comperato un bel monitor... ma se vendi i tuoi programmi, di solito sei costretto: a) a nascondere il codice all'amico, cioè alla concorrenza (chi copia, s'avvantaggia) b) a fare tutto in massima fretta, vale a dire male (più produci, più guadagni) insomma, non c'è tempo per l'ideale; non c'è tempo per la gioia di un codice *perfetto*. tutto questo è ingiusto. certe volte il commercio trasforma gli esseri umani in... in... mucche :) lasciatemi una settimana per mostrarvi qualcosa. un assaggio. // la questione del codice il mio secondo grazie è per Enrico Colombini. ho studiato il codice di IDRA, e ne ho dedotto quanto segue: a mio parere, la tecnologia JavaScript è una buona idea per programmare lo scheletro di una AT tradizionale. i vantaggi superano gli svantaggi, e i vantaggi mi sembrano + numerosi che altrove. eccone alcuni: - per gli scettici: contrariamente a quanto ritiene l'utente poco avvezzo agli artifizi di JS (e dei browser), quest'ultimo è perfettamente adeguato per scrivere un'AT: offre uno strumento completo; credetemi: con JS si possono operare miracoli, e perfino far resuscitare i morti -- volendo, oggi si può anche simulare in tutto e per tutto il parser di una classica AT, con scrolling verticale senza refresh del browser e "input controllato" via tastiera. - a livello di comunicazione uomo-macchina, un browser offre tutto ciò di cui un'AT abbisogni per essere esplorata. puoi personalizzare il carattere sullo schermo così come modificare a piacimento le dimensioni dei frame in cui è organizzata la rappresentazione; puoi variare lo stile di visualizzazione del testo, usare i colori, fare taglia-e-incolla da una finestra all'altra, gestire contenuti multimediali e far transitare via HTML tecnologie accessorie (come swf). - non è necessario distribuire sorgenti di AT con interprete a parte: il browser, strumento abbastanza diffuso, sostituisce quest'ultimo. JS gira più o meno su qualunque macchina, sebbene le migliori funzionalità dimorino solo su Netscape 6+ e MS IE 5+ -- vedi la necessità di un uso (circoscritto, e tutto sommato "standard") di risorse DHTML. quando dico "compatibilità" mi riferisco preferibilmente ai browser di livello 4; ho in mente di creare automatismi che consentano di giocare un'AT via JS dai brower successivi a lynx in poi, ma non è facile. - JS è un groviglio di funzionalità e risorse atte a girare sotto un "ambiente browser". sto dicendo che è un linguaggio pensato per Internet, e dunque -- conseguenza inevitabile -- programmate un'AT in JS e potrete farla giocare a tutti sulla rete, senza necessità di scaricare un listato (magari arricchita da una conversione ibrida in PHP -- PHP e JS sono + o - speculari nella sintassi, ma il primo, essendo lato server e dunque non avendo vincoli di sicurezza, offre un supporto per i file da capogiro, senza necessità di scomodare i cookies). - programmare in JS è Standard con la maiuscola: non è un linguaggio di scripting esoterico. JS si sforza di essere logica pura, e un codice sorgente è "esportabile" su altre piattaforme nella misura in cui è comprensibile ai più: diviene più facile il porting di listati JS su altre macchine e l'implementazione con altre tecnologie. perché i linguaggi, come i libri, si parlano fra loro... - grazie all'indipendenza dal browser-interprete, JS offre un ulteriore vantaggio: i listati occupano nulla in termini di Kbyte (salvo l'aggiunta di contenuti multimediali). programmate un'avventura sterminata e gioite alla prospettiva di poterla distribuire su un unico dischetto da 3,5... :) - infine, JS è gratuito. è tecnologia alla portata di tutti. altri crediti: - devo a IDRA l'avermi fatto distogliere da un pregiudizio che rischiava di farmi trascorrere qualche mese in apnea da programmatore: anziché creare funzionalità if/then da zero destinate a gestire i processi logici dell'AT in sé, farò girare quest'ultima attraverso gli operatori standard di JS, ovvero il codice di questa non sarà sviluppato in un formato a sé stante, ma farà parte integrante del codice JS: tradotto in guadagni, vuol dire tonnellate di codice in meno e maggiore rapidità di esecuzione. - sto cercando di fare tesoro dell'arte sottile di Colombini nel gestire i "luoghi" di una AT come se fossero *function* JS indipendenti: soluzione comoda nella fase di editing, x meglio organizzare la struttura logica dell'*include* .js che conterrà l'AT di volta in volta caricata nel sistema. // torcibudella mi spiace per gli affezionati allo spirito dell'informatica libera (me per primo), ma ho cominciato a lavorare su questa cosa (e sto postando questo msg) sotto Win ME -- scrivo da un'installazione di fortuna, un po' scassata ma tutto sommato funzionante (per la cronaca, Win ME è quel s. o. che nasconde la shell del DOS fra gli "Accessori"...) ho la partizione ext2 momentaneamente fuori servizio per manutenzione e cambiamenti radicali, e nel mentre sto portando avanti dei lavori sotto tecnologia proprietaria MS (mi pagano per farlo, e ho bisogno di $). insomma, mi occorre tempo x reinstallare il pinguino: mi sarebbe piaciuto cominciare romanticamente con Netscape sotto GNU/Linux e finire con IE, non il contrario; btw, sto programmando con un editor che è poco + di un Notepad :) i pezzi di sorgente alpha "sporco" che distribuirò tra 1 settimana saranno dunque momentaneamente pensati per IE 5 (= funzioni proprietarie Bill Gates + JS ultima versione), così come li ho programmati in questi gg -- ora non ho tempo né energie x badare alla compatibilità tra browser. un esempio banale: attualmente faccio uso, per comodità, della funzione avanzata "split" x smembrare pezzi di stringa in un array, che in futuro sarà affiancata da codice equivalente per le versioni precedenti di JS. mi occorre giusto un sistema funzionante, dal quale cominciare a programmare una piccola AT di prova che mi aiuti a risolvere i problemi man mano che si presenteranno. al resto penserò strada facendo: per prima cosa l'essenziale; se decidessi di complicarmi la vita adesso, nel giro di due settimane sarei un programmatore morto. altro esempio: in questi giorni il torcibudella di turno ha assunto le sembianze del comando di IE sotto JS "insertAdjacentHTML", che a dire il vero fa esattamente quel che dice di fare: magicamente, può aggiungere in coda a una pagina HTML delle righe di codice *senza* effettuare il refresh della stessa (il che, in un'AT, comporterebbe fastidiose lungaggini e soluzioni poco eleganti). ho trovato del codice di fortuna che emula questa funzione di IE sotto Netscape 6, ma ancora nulla da fare x i "vecchi" browser (mi interessa in primo luogo Netscape 4, che è standard in molte distribuzioni GNU / Linux). se qualcuno ha un'illuminazione, punti la torcia anche da questa parte. non sono mica un guru, e non mi vergogno di mostrare codice incasinato. in fase di testing, tutto l'aiuto sarà il benvenuto. accetto anche parti di codice riscritte/ottimizzate da voi :) cmq tutto sarà + chiaro tra una settimana. un saluto. e grazie. chiedo scusa x il tono saccente di alcune mie affermazioni. (sono solo un cazzone che ama la follia e la libertà dei computer) happy hacking! Lord 2023