# Inform e Glulx/Inform e ancora Inform/Varie, listati e decompilatore

Inform e Glulx
Copertina Tutti i moduli · Sviluppo
* IntroduzioneInform e Glulx/Introduzione
* Cosa occorre per iniziareInform e Glulx/Cosa occorre per iniziare
** Compilatore, interprete e altro ancora
** L'installazione
** Perché IF-IDE?
** Per chi non vuole (o non può) usare IF-IDE e Windows Frotz 2002
* Le basi di Inform
** A cosa serve questo capitolo?Inform e Glulx/Le basi di Inform/A cosa serve questo capitolo?
** Benvenuto in InformInform e Glulx/Le basi di Inform/Benvenuto in Inform
** Le funzioniInform e Glulx/Le basi di Inform/Le funzioni
** Variabili numeriche e caratteri specialiInform e Glulx/Le basi di Inform/Variabili numeriche e caratteri speciali
** Un po' di matematica non guasta maiInform e Glulx/Le basi di Inform/Un po' di matematica non guasta mai
** Passaggio dei parametri e ritorno dei valoriInform e Glulx/Le basi di Inform/Passaggio dei parametri e ritorno dei valori
** L'input dei dati numerici: l'istruzione GetnumberInform e Glulx/Le basi di Inform/L'input dei dati numerici: l'istruzione Getnumber
** If (condition) then... else...Inform e Glulx/Le basi di Inform/If (condition) then... else...
** While e do... untilInform e Glulx/Le basi di Inform/While e do... until
** For, break e continueInform e Glulx/Le basi di Inform/For, break e continue
** L'utilizzo delle costantiInform e Glulx/Le basi di Inform/L'utilizzo delle costanti
** Switch... caseInform e Glulx/Le basi di Inform/Switch... case
** Salti ed etichetteInform e Glulx/Le basi di Inform/Salti ed etichette
** Caratteri e stringheInform e Glulx/Le basi di Inform/Caratteri e stringhe
** I vettoriInform e Glulx/Le basi di Inform/I vettori
** Le stringhe numericheInform e Glulx/Le basi di Inform/Le stringhe numeriche
** Le direttiveInform e Glulx/Le basi di Inform/Le direttive
** Il debuggingInform e Glulx/Le basi di Inform/Il debugging
* RUINS, l'avventura comincia
** Il grande altopiano (dalla padella alla brace)Inform e Glulx/RUINS, l'avventura comincia/Il grande altopiano (dalla padella alla brace)
** La cassa d'imballaggio (riuscirete a riempirla tutta)?Inform e Glulx/RUINS, l'avventura comincia/La cassa d'imballaggio (riuscirete a riempirla tutta)?
** Il fungo (velenoso o non velenoso)?Inform e Glulx/RUINS, l'avventura comincia/Il fungo (velenoso o non velenoso)?
** Chi ha paura del buio (gli insetti no di certo)?Inform e Glulx/RUINS, l'avventura comincia/Chi ha paura del buio (gli insetti no di certo)?
** La porta di pietra (gialla è più carina)Inform e Glulx/RUINS, l'avventura comincia/La porta di pietra (gialla è più carina)
** La chiave di pietra (così non si arruginisce)Inform e Glulx/RUINS, l'avventura comincia/La chiave di pietra (così non si arruginisce)
** Il primo tesoro (speriamo che non sia un anello)Inform e Glulx/RUINS, l'avventura comincia/Il primo tesoro (speriamo che non sia un anello)
** La maschera facciale (non di carnevale)Inform e Glulx/RUINS, l'avventura comincia/La maschera facciale (non di carnevale)
** Il ritorno della mummia (non è un film, è tutto vero)Inform e Glulx/RUINS, l'avventura comincia/Il ritorno della mummia (non è un film, è tutto vero)
** L'incrocio di Xibalbá (ma è davvero così pauroso)?Inform e Glulx/RUINS, l'avventura comincia/L'incrocio di Xibalbá (ma è davvero così pauroso)?
** La sfera di pietra pomice (avete indossato il casco)?Inform e Glulx/RUINS, l'avventura comincia/La sfera di pietra pomice (avete indossato il casco)?
** Una gabbia per un facocero (e l'archeologo che fine ha fatto)?Inform e Glulx/RUINS, l'avventura comincia/Una gabbia per un facocero (e l'archeologo che fine ha fatto)?
** La cripta dei nove signori della notte (o sette come i nani)?Inform e Glulx/RUINS, l'avventura comincia/La cripta dei nove signori della notte (o sette come i nani)?
** Un archeologo per un facocero (basta solo che non grugnite)Inform e Glulx/RUINS, l'avventura comincia/Un archeologo per un facocero (basta solo che non grugnite)
** La fine di RUINS è giunta (ma con Inform siete solo all'inizio)Inform e Glulx/RUINS, l'avventura comincia/La fine di RUINS è giunta (ma con Inform siete solo all'inizio)
* Inform e ancora Inform
** La Status LineInform e Glulx/Inform e ancora Inform/La Status Line
** I menuInform e Glulx/Inform e ancora Inform/I menu
** I labirinti e i nomi pluraliInform e Glulx/Inform e ancora Inform/I labirinti e i nomi plurali
** Il tempoInform e Glulx/Inform e ancora Inform/Il tempo
** I coloriInform e Glulx/Inform e ancora Inform/I colori
** I mezzi di trasportoInform e Glulx/Inform e ancora Inform/I mezzi di trasporto
** Su e giù con l'ascensoreInform e Glulx/Inform e ancora Inform/Su e giù con l'ascensore
** Gli NPC (o PNG in italiano)Inform e Glulx/Inform e ancora Inform/Gli NPC (o PNG in italiano)
** Le estensioni (o librerie aggiuntive)Inform e Glulx/Inform e ancora Inform/Le estensioni (o librerie aggiuntive)
** Varie, listati e decompilatoreInform e Glulx/Inform e ancora Inform/Varie, listati e decompilatore
* Inform e Glulx
** Cos'è GlulxInform e Glulx/Inform e Glulx/Cos'è Glulx
** L'installazione di JifInform e Glulx/Inform e Glulx/L'installazione di Jif
** La compilazioneInform e Glulx/Inform e Glulx/La compilazione
** L'esecuzioneInform e Glulx/Inform e Glulx/L'esecuzione
** Da Inform a GlulxInform e Glulx/Inform e Glulx/Da Inform a Glulx
** La grafica e il sonoroInform e Glulx/Inform e Glulx/La grafica e il sonoro
** L'allineamento delle immaginiInform e Glulx/Inform e Glulx/L'allineamento delle immagini
** Avventure senza graficaInform e Glulx/Inform e Glulx/Avventure senza grafica
** I colori e gli stili del testoInform e Glulx/Inform e Glulx/I colori e gli stili del testo
** La personalizzazione della Status LineInform e Glulx/Inform e Glulx/La personalizzazione della Status Line
** output dei datiInform e Glulx/Inform e Glulx/L'input/output dei dati
** VarieInform e Glulx/Inform e Glulx/Varie
** GULL, il manuale ufficialeInform e Glulx/Inform e Glulx/GULL, il manuale ufficiale
* Appendici
** Appendice A - Le azioni principaliInform e Glulx/appendici/Appendice A - Le azioni principali
** Appendice B - I messaggi della libreriaInform e Glulx/appendici/Appendice B - I messaggi della libreria
** Appendice C - Gli errori della compilazioneInform e Glulx/appendici/Appendice C - Gli errori della compilazione
** Appendice D - La soluzione di RuinsInform e Glulx/appendici/Appendice D - La soluzione di Ruins
** Appendice E - Come usare Windows Frotz 2002Inform e Glulx/appendici/Appendice E - Come usare Windows Frotz 2002
** Appendice F - Le mappeInform e Glulx/appendici/Appendice F - Le mappe
** Appendice G - Scrivere, distribuire e reperire delle avventure testualiInform e Glulx/appendici/Appendice G - Scrivere, distribuire e reperire delle avventure testuali
Modifica il sommario

## Varie, listati e decompilatore

Ci sono ancora diverse caratteristiche di questo linguaggio che meritano di essere esaminate in dettaglio, nell’ordine:
è possibile supportare il set di caratteri in modalità estesa (come ad esempio il simbolo dell’euro "€"). Vediamo allora questo semplice esempio:
Come per i colori, anche qui è meglio chiedere all’inizio se si vogliono o meno supportare i caratteri in modalità estesa (il motivo è sempre lo stesso: non è detto che tutti gli interpreti Z-code supportino correttamente questa modalità). Dopodiché, vengono stampate a video tre frasi che fanno tutte riferimento alla funzione Euro, la quale stampa la parola euro o il simbolo € a seconda del valore memorizzato nella variabile globale charext_on (a seconda, cioè, che l’utente abbia accettato o meno il supporto dei caratteri in modalità estesa). Occorre tuttavia puntualizzare che, per far sì che Inform "capisca" se un dato carattere esteso debba essere supportato o meno, bisogna ricorrere all’istruzione Zcharacter table:
dove @{20ac} è proprio il simbolo dell’euro. Ulteriori informazioni potete trovarle all’indirizzo http://www.firthworks.com/roger/informfaq/aa20.html;
il contatore dei turni parte di default da zero. Definendo tuttavia una costante START_MOVE con un valore diverso da zero:
il contatore parte da quel valore (in questo esempio 1 anziché zero);
aggiungendo la proprietà compass_look a un oggetto:
è possibile usare il comando "guarda a [direzione]":
è possibile, mediante la proprietà before_implicit, mangiare un oggetto prima ancora di possederlo:
Per capire meglio quanto è stato detto proviamo a vedere quello che accade normalmente (senza, cioè, la proprietà before_implicit):
Se il giocatore vuole mangiare il fungo senza ancora possederlo nell’inventario, Inform esegue automaticamente il comando "prendi il fungo" in modo tale che poi il giocatore lo possa finalmente mangiare. Con la proprietà before_implicit, invece:
il problema non si pone;
l’istruzione ScreenHeight restituisce l’altezza della finestra principale (o meglio, il numero di righe che la costituiscono);
l’istruzione ClearScreen può essere usata in diversi modi; ClearScreen(1) pulisce solo la status line, ClearScreen(2) solo la finestra principale e, infine, ClearScreen(0) - o più semplicemente ClearScreen - che le pulisce entrambe;
se un oggetto di tipo contenitore, come ad esempio un comunissimo sacco di tela, si trova in una locazione:
ecco quello che accade se durante il gioco appare la descrizione della stanza:
Come potete vedere, il sacco di tela viene stampato a video insieme a tutto il suo contenuto. Tramite la proprietà invent, invece, è possibile "personalizzare" la sua descrizione:
Così facendo, se il sacco è vuoto viene stampato a video il messaggio "Puoi anche vedere un sacco vuoto qui."; se contiene un oggetto (ad esempio il giornale), viene stampato a video il messaggio "Puoi anche vedere un sacco contenente un giornale di un mese fa qui."; se contiene invece due o più oggetti viene stampato a video il messaggio "Puoi anche vedere un sacco pieno di oggetti qui.":
È tutto. Ovviamente ci sarebbero molte altre cose da dire, ma dal momento che questo manuale è rivolto principalmente ai non esperti della programmazione, è meglio concludere qui il capitolo. A ogni modo, vi consiglio vivamente di prendere la sana abitudine di andare a studiare i listati degli altri autori (se sono ovviamente disponibili) poiché solo così si impara a programmare (e a migliorare, di conseguenza, le proprie avventure testuali). Oltre a Ruins, altri due listati da studiare sono sicuramente Avventura e Negozio; altrimenti, potete sempre rifarvi anche agli altri listati reperibili sul mio sito o sul portale di If-Italia.
Perché però non giocarle? Le avventure testuali si "conoscono" anche imparando a risolvere i vari enigmi che ci vengono proposti durante lo svolgimento del gioco: è indubbio quindi, che un buon programmatore di avventure testuali deve anche essere a sua volta un buon giocatore. Personalmente consiglio quindi d’inizare con Flamel (di Francesco Cordella), WarMage (di Giancarlo Niccolai), la Pietra della Luna (di Paolo Lucchesi), Filaments (di JB Ferrant – tradotta in italiano da Marco Totolo) ed Enigma di Marco Vallarino. Altre avventure italiane potete trovarle sul portale di If-Italia, mentre all’indirizzo http://www.wurb.com/if/ potete trovare tutte (o quasi) quelle scritte nelle altre lingue (inglese in primis e poi, a seguire, spagnolo, francese, tedesco e - ovviamente - italiano).

## Note

* ↑ Per ottenere questo simbolo, premete contemporaneamente i tasti Alt (destro) + E della vostra tastiera.
* ↑ Cliccate qui per scaricare il listato di questo esercizio (il file 5.10.inf).
* ↑ Per ulteriori informazioni su questo linguaggio vi consiglio di consultare, oltre all’Inform Beginner Guide e alla Guida ad Inform per Principianti - più volte citati nel manuale, la Guida a Inform-Glulx di Marco Falcinelli, la Guida a Inform-Glulx di Andrew Plotkin, le Inform Release Notes e le pratiche mini-guide InfoLib e Inform in four minutes scritte entrambe dal bravissimo Roger Firth.
* ↑ Esiste infine la possibilità di usare Reform, un decompilatore in grado di estrarre un listato da un file eseguibile Z-code (come spiegato nell’ottimo manuale contenuto all’interno dell’archivio stesso): il risultato ottenuto non è sempre ottimale ma d’altra parte è sempre meglio che niente.