# Inform e Glulx/RUINS, l'avventura comincia/Il grande altopiano (dalla padella alla brace)

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
Siamo negli anni ’30; siete un intrepido (o forse folle?) archeologo che è andato nella foresta amazzonica alla ricerca di reperti archeologici da riportare alla civiltà, ma qualcosa è andato storto. Sono passati ormai diversi giorni da quando avete messo piede in quest’enorme "tappeto verde", e siete senz’acqua, sporchi e sudati. I rovi spinosi che siete stati costretti ad attraversare vi hanno lacerato la pelle e Londra vi sembra ormai tanto lontana...
Ma, proprio quando state per perdere ogni speranza, scorgete in lontananza un immenso altopiano. Vi mettete a correre, quasi come se il vostro sesto senso avesse individuato qualcosa, e così è: delle rovine, un cumulo di materiale da costruzione che una volta avrebbero potuto costituire una piramide sepolcrale... cosa volete di più dalla vita? Finalmente avete scoperto qualcosa che ha a che fare con l’archeologia, e chissà quanti tesori sepolti ci sono là sotto!
Vi guardate intorno: cupi ulivi crescono ovunque e una pioggia appena smessa riempie l’aria con una calda nebbia bagnata. Tirate fuori dalla tasca il vostro "Manuale dell'archeologo alle prime armi" ma qualcosa non va: il titolo di questo libro è "Come scrivere (e giocare) delle avventure testuali in Inform e Glulx".
Da dove salta fuori questa roba? Beh, la piramide non scappa e cominciate così a sfogliare le prime pagine...

## Il grande altopiano (dalla padella alla brace)

In Inform, un’avventura testuale inizia con la funzione Initialise, proprio come accade in questo primo programma:
Ogni avventura testuale ha una locazione di partenza (che in questo caso è l’oggetto Forest) ed è costituita da un certo numero di oggetti. Nel nostro caso, l’oggetto Forest ha a sua volta un nome interno ("Forest") utilizzato all’interno del listato, un nome esterno ("il Grande Altopiano") che viene stampato a video durante il gioco, la proprietà description (la descrizione dell’oggetto ➨ non sempre presente), delle direzioni (u_to che indica sopra e cant_go che indica tutte le altre ➨ non sempre presenti) e l’attributo light (anche questo non sempre presente). Provando a compilare il programma ecco cosa appare:
Come potete vedere, la dimostrazione effettiva che il gioco parte proprio dalla funzione Initialise, è il fatto che inizia dal Grande Altopiano e che il primo testo stampato a video è proprio quello contenuto all’interno della funzione stessa. Seguono poi le istruzioni per la stampa della scritta RUINS (definita all’inizio come Constant Story ➨ deve essere sempre presente), del contenuto della costante Headline (anche questa, sempre presente), e i relativi file di include (sempre presenti) che sono nell’ordine:
* Parser(.h) - contiene le routine per il parser;
* Verblib(.h) - la libreria dei verbi;
* Replace(.h) - stampa a video alcune note relative a Infit;
* ItalianG(.h) - la grammatica dei verbi adattata alla nostra lingua.
I testi successivi che appaiono sono il nome esterno dell’oggetto Forest, la sua descrizione, e il segno di maggiore (>) che si chiama prompt dei comandi.
A questo punto tocca a noi. Proviamo allora a inserire un paio di comandi per vedere cosa succede:
In questo caso, ogni volta che si verifica l’evento u_to (quando cioè vogliamo dirigerci verso l’alto), Inform risponde che gli alberi sono coperti di spine e che quindi non possiamo farlo. Se invece proviamo ad andare in qualsiasi altra direzione (quando cioè si verifica l’evento cant_go), Inform ci dice che non possiamo abbandonare la spedizione. Fino a qui non sembra esserci nulla di strano, perché questi sono eventi che abbiamo definito. Ma, come potete vedere, Inform "reagisce" anche a dei comandi che non sono stati descritti da nessuna parte all’interno del nostro programma. Come mai? Perché Inform, a differenza della maggior parte dei linguaggi di programmazione, è dedicato solo ed esclusivamente alle avventure testuali e offre un ambiente integrato e pronto per essere tranquillamente utilizzato e personalizzato. Questo non significa però che l’avventura testuale è già pronta; tuttavia, tutte le routine per la gestione dell’inventario, del salvataggio e del caricamento della posizione, del parser dei comandi e molto altro ancora (che nei linguaggi di programmazione non specifici per le avventure testuali devono essere programmati da zero con delle difficoltà non indifferenti) sono state già incluse nei famosi file di Include descritti prima. Un bel vantaggio, non è vero?
L’ultima cosa che rimane da vedere è l’attributo light, che dice a Inform che Forest è un oggetto "illuminato". Per farvi capire meglio quello che sto dicendo, proviamo a cambiare questo attributo con ~light (per chi non avesse ancora letto il capitolo 3, la tilde è il simbolo di negazione) ed ecco quello che appare:
Come potete vedere, la descrizione della foresta è scomparsa, perché siete... al buio, proprio come se vi avessero chiuso in un ascensore con le luci guaste (e chi di voi soffre di claustrofobia adesso starà sicuramente facendo dei salti di gioia). Questo evento, che in Inform si chiama the_dark, ci sarà molto utile più avanti per simulare il funzionamento della lampada al sodio: ma forse è meglio procedere con ordine, senza mettere troppa carne al fuoco.

## Note

* ↑ A tutti quelli di voi che sono passati dal capitolo 2 direttamente a questo (a quelli di voi, cioè, che hanno saltato il capitolo 3) consiglio vivamente di leggere con molta attenzione il paragrafo 3.1 (anche se naturalmente nessuno vi obbliga).
* ↑ Più precisamente, tutte le volte che il giocatore si trova nella locazione a cui il nome esterno fa riferimento.
* ↑ Cliccate qui per scaricare il listato di questo esercizio (il file 4.01.inf).