# Inform e Glulx/RUINS, l'avventura comincia/La chiave di pietra (così non si arruginisce)

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
Avete sempre odiato le porte chiuse, soprattutto quelle di pietra. Avete tentato di tutto, dal pronunciare arcane formule magiche (Apriti Sesamo) a prenderla a calci e pugni, ma a parte il dolore lancinante alle mani e ai piedi, non avete risolto un bel nulla: la porta continua a non aprirsi. Ritornate nella Sala Quadrata, sconsolati e sempre più decisi a rinunciare alla spedizione, quando all’improvviso vi ricordate che verso est c’è un altro passaggio che non avete ancora percorso. Vi dirigete verso quella direzione e vi ritrovate in quella che a prima vista sembra essere la tana di un verme gigante: un groviglio di cunicoli disordinati come una ragnatela si dirige verso le fessure tra le pietre e, appiccicato alla fessura di una parete, c’è un bozzolo bianco e scintillante grande come un pallone da spiaggia. Lo raccogliete (non senza un certo ribrezzo) e ritornate nella Sala Quadrata: qui, il bozzolo vi scivola dalle mani e cade nel bagliore solare, dove ribolle oscenamente, si dilata e poi scoppia. Centinaia di piccoli insetti corrono in tutte le direzioni nell'oscurità; gli spruzzi di melma e una curiosa chiave di pietra gialla sono tutto ciò che rimane sul pavimento. Ma che fortuna! Raccogliete la chiave, correte verso la porta di pietra e… incredibile, ora si apre e potete finalmente proseguire: chi è Indiana Jones al vostro confronto?

## La chiave di pietra (così non si arrugginisce)

La Tana del Verme è un oggetto che si trova a est della Sala Quadrata:
La particolarità che lo contraddistingue da quanto visto finora, si può mettere in evidenza quando il giocatore si dirige verso sud; in questo caso, se questi ha preso il bozzolo (un oggetto che esamineremo fra poco) allora ritorna nella Sala Quadrata, altrimenti (se il bozzolo non è ancora stato raccolto) il giocatore ritorna, a caso, o nella Sala Quadrata, o nel Corridoio in pendenza o nel Grande Altopiano. Se invece viene posato a terra un oggetto qualsiasi, viene immediatamente spostato nella Sala Quadrata.
È importante osservare che la funzione di stampa (The) stampa a video l’articolo determinativo (Il, Lo, La, I, Gli, Le) ➨ con l’iniziale maiuscola) opportunamente correlato con l’oggetto associato (in questo caso l’oggetto posato dal giocatore), mentre l’istruzione itorthem (che appartiene a Infit e non a Inform) stampa lo, la, li, le a seconda del genere (maschile o femminile) e del numero (singolare o plurale). La funzione di stampa (the) ha la stessa funzione della (The) con la differenza che la lettera iniziale dell’articolo determinativo è minuscola anziché maiuscola. La funzione di stampa (A), invece, stampa a video l’articolo indeterminativo (Un, Uno, Una, Un’) ➨ con l’iniziale maiuscola) dell’oggetto ad essa associato, mentre la funzione di stampa (a) ha la stessa funzione della (A) con la differenza che la lettera iniziale dell’articolo indeterminativo è minuscola anziché maiuscola.
L’istruzione print_ret stampa a video il relativo messaggio ritornando poi il valore true, e rappresenta l’equivalente del seguente codice:
La sua funzione, in questo caso, è quella di impedire che venga stampato a video il messaggio di default relativo all’azione Drop, come accade se proviamo a usare la sola istruzione print:
Non restituendo più il valore true, Inform stampa anche la parola Posata (il messaggio di default, appunto).
Passiamo ora a esaminare il bozzolo citato poco fa:
Come potete vedere, questo oggetto non è poi così complicato. L’unica cosa da notare, a livello di codice, è che se il giocatore raccoglie il bozzolo e dalla Sala Quadrata si dirige verso l’alto, il bozzolo scoppia e il giocatore viene divorato dai piccoli insetti affamati: un altro modo per farsi uccidere... Per fare poi in modo che dal bozzolo "esca" la chiave di pietra gialla, occorre aggiungere un altro pezzo di codice all’oggetto Square_Chamber:
In poche parole, quando il giocatore posa il bozzolo (noun) nel raggio (second), il bozzolo (l’oggetto eggsac) viene rimosso tramite l’istruzione remove e viene sostituito con la chiave di pietra (l’oggetto stone_key) mediante l’istruzione move. Nulla di complicato, come potete vedere.
Qualche difficoltà comincia invece ad esserci nel momento in cui il giocatore deve aprire la porta di pietra con la chiave. Il problema nasce dal fatto che in italiano, a differenza dell’inglese, il verbo "apri" può essere usato a livello di comando sia quando la porta è chiusa a chiave ("apri la porta con la chiave) che quando invece non lo è ("apri la porta"). Inform invece, gestisce questi eventi con due verbi differenti (unlock e open) e se omettiamo il nuovo pezzo di codice presente all’inizio del programma:
ecco quello che accade:
Come potete vedere, quando il giocatore dà il comando "apri la porta con la chiave", viene stampato a video il messaggio "Ora hai aperto la porta di pietra." che però non dice la verità, perché la porta è ancora chiusa. Questo problema può essere risolto facilmente andando a personalizzare il messaggio di libreria relativo al verbo Unlock, sostituendo la frase "Ora hai aperto la porta di pietra." con "Ora la porta di pietra non è più chiusa a chiave.":
Adesso le cose vanno decisamente meglio, non vi pare?
genderandnumber è un’altra istruzione appartenente a Infit, e riconosce il genere e il numero di un oggetto. Inoltre, viene testato il numero 4 perché il verbo Unlock ha diversi tipi di messaggi, e il quarto è proprio quello che ci interessa.
Ricordatevi anche che quando volete personalizzare un messaggio di libreria, dovete inserire l'oggetto LibraryMessages tra le righe di codice Include "parser" e Include "verblib", proprio come accade in questo esempio:
Oltre alle azioni, è possibile personalizzare anche i messaggi di errore (testati sotto la voce Miscellany): l’errore numero 38, per esempio, si verifica quando il giocatore vuole eseguire un’azione con un verbo che non esiste (che non è stato, cioè, dichiarato in Infit o all’interno dell’avventura stessa ➨ es.: "allaga la casa").
Già che ci siamo, vediamo come si può personalizzare anche il prompt dei comandi. Per fare in modo che al posto del segno di maggiore appaia una frase del tipo "Cosa vuoi fare?", occorre creare un oggetto LibraryMessages nel seguente modo:
Infit, inoltre, mette a disposizione quindici domande: per usarle, basta inserire l’istruzione constant PROMPT; all’inizio del programma e Inform ne sceglierà una a caso ogni volta che il giocatore effettuerà una nuova mossa.
È perfino possibile stabilire il tipo di prompt da usare in base a una determinata mossa del giocatore, come accade in quest’altro esempio:
turns è una variabile di libreria che contiene il numero delle mosse effettuate dal giocatore. Dopo la quinta mossa, il messaggio del prompt ("Sono ai tuoi ordini:") non cambia più fino alla fine del gioco.

## Note

* ↑ Per ulteriori informazioni su come usare le funzioni di Infit, consultate la breve guida contenuta all’interno del file Infit25.zip.
* ↑ Cliccate qui per scaricare il listato di questo esercizio (il file 4.06.inf).
* ↑ Potete trovare un elenco completo dei messaggi della libreria all’appendice B.