# Inform e Glulx/RUINS, l'avventura comincia/La sfera di pietra pomice (avete indossato il casco)?

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
Non potete stare tutto il tempo a poltrire, perché la prima regola che vi hanno insegnato alla scuola serale di archeologia è stata quella di non perdersi mai d’animo. Il vostro fiuto "infallibile" vi dice che dovete dirigervi verso il Tempio, ma pochi attimi dopo aver tolto la mano dalla sfera di pietra pomice, essa comincia rotolare a sud, diretta verso il baratro oscuro e profondo. La rincorrete più veloce che potete, ma non potete fare nulla per impedire che la sfera rotoli giù nel canyon senza controllo per alcuni metri, prima di sussultare nelle fauci del baratro. Con un piccolo rimbalzo, però, vi colpisce di striscio sulla fronte. Perdete i sensi e cadete in avanti sanguinanti; quando riprendete conoscenza, l'estremità sud del canyon continua sopra la sfera di pietra pomice incastrata nel baratro e vi compiacete nuovamente con voi stessi per il vostro incredibile "acume" archeologico. Un osso inciso, più luminoso di quello che sembra, sporge da una polla di limo bagnato nella parete del canyon. Lo raccogliete chiedendovi se piacerà al vostro cane e, dal momento che non potete più proseguire, tornate indietro in direzione della Sala del Tempio.

## La sfera di pietra pomice (avete indossato il casco)?

Sulla base di quanto abbiamo visto finora, il nuovo codice di Ruins non presenta delle grosse novità, a parte la funzione each_turn dell’oggetto chasm:
Se la sfera di pietra pomice si trova nel baratro (if huge_ball in parent(self)), a ogni mossa del giocatore la direzione sud dell’oggetto Canyon_S (l’estremità inferiore del canyon) punta alla nuova locazione On_Ball (la sporgenza di pietra pomice). Per quanto riguarda invece le descrizioni, se la sfera di pietra pomice non è ancora rotolata nel baratro, Inform stampa a video il messaggio "La sfera di pietra pomice rotola giù nel canyon senza controllo..." altrimenti viene stampato a video il messaggio "L'estremità sud del canyon continua ora sopra la sfera di pietra pomice incastrata nel baratro.". Ecco la dimostrazione "pratica":
Qualcuno di voi può ancora confondersi con la nuova parte di codice relativa alla sfera di pietra pomice (l’oggetto huge_ball):
Per quanto riguarda l’azione PushDir appartenente alla proprietà before, se il giocatore si trova all’incrocio di Xibalbá e cerca di spingere la sfera (che deve ovviamente trovarsi anch’essa lì) verso nordest, Inform stampa a video un messaggio che ci avvisa che l’entrata del Tempio non è abbastanza larga. Ricordo ancora per l’ennesima volta, che l’istruzione second si riferisce alla direzione inclusa nel comando (ad esempio "spingi la sfera a nordest", dove noun è la sfera e second è nordest).
Tra le innumerevoli possibilità offerte da Inform, c’è anche quella di stabilire se un oggetto debba essere visibile o meno al buio. Ecco infatti quello che succede quando il giocatore si trova nella Sala del Tempio e prova a spegnere la lampada al sodio:
Per non confondere troppo le idee, ho preferito disattivare momentaneamente il daemon degli insetti carnivori . Come potete vedere, di default, se ci si trova al buio Inform non riconosce nessun oggetto all’infuori di quelli contenuti nell’inventario del giocatore. Quando però uno di essi viene posato a terra, diventa irriconoscibile come tutti gli altri. Ora, questa situazione mi sembra alquanto irreale ed esagerata; tenendo infatti conto che la lampada al sodio si trova accanto al nostro archeologo, non credo proprio che gli risulti così difficile riuscire ad accenderla anche se si trova al buio. La funzione di libreria InScope, posta subito dopo la funzione di libreria DeathMessage, è proprio quella che fa al caso nostro:
Così facendo, rendiamo riconoscibile la lampada al sodio anche al buio:
C’è un problema però: la lampada al sodio si può accendere solo se l’oggetto a cui appartiene ha l’attributo supporter. Occorre quindi fare una piccola modifica all’oggetto sodium_lamp:
Così facendo, se si cerca di accendere la lampada in una locazione che è diversa da thedark (quando cioè non si è al buio), viene verificato che la lampada sia effettivamente posata a terra, altrimenti si procede normalmente alla sua accensione:
Possiamo anche fare in modo che la lampada possa essere riconosciuta al buio ed accesa solo in una locazione ben precisa (ad esempio il corridoio in pendenza):
o dappertutto tranne che nel corridoio:
In una situazione reale, se siamo al buio e procediamo a tentoni all’interno di una grande piramide sepolcrale, corriamo il serio rischio di farci male se non addirittura di perdere la vita cadendo in una buca molto profonda. Che ci crediate o no, Inform ci viene incontro anche in questo caso, mettendoci a disposizione la funzione di libreria DarkToDark. Per prima cosa, occorre definire una variabile globale denominata dark:
che vale false anche se non viene esplicitamente dichiarato. Segue poi la parte di codice relativa alla funzione vera e propria, che va posizionata subito dopo la funzione di libreria DeathMessage (o eventualmente InScope se presente):
La variabile dark viene immediatamente testata: se vale false, le viene allora assegnato il valore true e viene stampato a video il relativo messaggio; altrimenti, si passa alla seconda if, dove viene generato un numero casuale da 1 a 3 a ogni mossa del giocatore. Se non "esce" il numero 1 il gioco può proseguire:
altrimenti, ecco la fine che fa il nostro povero archeologo:

## Note

* ↑ Cliccate qui per scaricare il listato di questo esercizio (il file 4.11.inf).