# Inform e Glulx/RUINS, l'avventura comincia/Il fungo (velenoso o non velenoso)?

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
Vorreste esplorare la piramide, ma l’entrata è bloccata dalle macerie e non avete la più pallida idea di come toglierle. Stanchi e affamati, vi sedete per terra e notate che poco distante c’è un fungo macchiato con il gambo sottile. Vorreste provare a mangiarlo, ma non siete del tutto sicuri che non sia velenoso. Se poi state male, chi vi viene a soccorrere? Il telefonino non è stato ancora inventato, e sapete bene che ci vorranno ancora moltissimi anni prima che qualcuno lo costruirà. Al diavolo, quando si ha fame si ha fame. Raccogliete delicatamente il fungo e ne assaggiate un pezzetto. Il sapore è orribile, ma almeno non siete ancora morti, è già qualcosa. Improvvisamente, un macao passa sopra la vostra testa... il battito delle sue ali è assordante... delle pietre crollano l’una sull’altra... Le macerie sono sparite e l’entrata si è liberata! Ora potete vedere dei gradini rotti e logori che conducono verso una sala poco illuminata: potreste essere le prime persone a mettervi piede dopo cinquecento anni...

## Il fungo (velenoso o non velenoso)?

La definizione dell’oggetto mushroom (il nostro fungo, per l’appunto), presenta alcune novità rispetto a quanto visto finora:
Allora... qui, il messaggio della proprietà description, appare solo quando si dà il comando "esamina":
mentre il messaggio della proprietà initial, come già sappiamo, appare insieme alla descrizione del Grande Altopiano. Un’altra cosa molto importante in Inform, è la gestione delle azioni (o dei verbi). Nel nostro caso, sono stati previsti dei controlli per i verbi prendi (Take), posa (Drop) e mangia (Eat). Alcune azioni sono possibili solo se l’oggetto che le contiene ha dei determinati attributi: il giocatore può mangiare il fungo perché l’oggetto mushroom contiene l’attributo edible.
La variabile locale mushroom_picked viene dichiarata con il valore false (falso) e viene usata da Inform per vedere se il giocatore ha raccolto il fungo per la prima volta oppure no. Non appena questi lo raccoglie, Inform si chiede se il valore di mushroom_picked è uguale a true (vero). Se no, glielo assegna (il fungo è stato raccolto per la prima volta) e stampa a video il messaggio che segue. Se il giocatore lo posa poi a terra e lo raccoglie una seconda volta, la variabile vale true e viene quindi stampato l’altro messaggio.Ecco in pratica cosa accade:
Il nome della variabile è preceduto da self. per dire a Inform che mushroom_picked appartiene solo e soltanto all’oggetto mushroom. La stessa cosa vale per la variabile locale rubble_filled che però appartiene all’oggetto steps e serve per verificare se l’ingresso della piramide è bloccato oppure no. Questo oggetto dichiara il valore della variabile come true:
facendo così in modo che all’inizio l’entrata resti bloccata dalle macerie. Quando invece il giocatore mangia il fungo, la variabile vale false e le macerie spariscono:
Tutte le volte poi che il giocatore visita una locazione, Inform le attribuisce il valore visited. Se proviamo a scendere i gradini e subito dopo a risalirli, accade una cosa interessante:
L’oggetto Square_Chamber (la Sala Quadrata) è (almeno per ora) piuttosto semplice:
non appena il giocatore vi mette piede, la sala è visited (visitata). Quando ritorna poi in superficie e riesamina la struttura, i giochi sono fatti: essendo la Sala Quadrata stata visitata, viene stampato il secondo messaggio ("stata la prima persona ad avervi messo piede") anziché il primo ("la prima persona a mettervi piede").
Un’altra cosa da notare è che quando si ritorna in una stanza visitata, il testo della sua descrizione scompare: perché? Perché, di default, Inform è in modalità normale, e dà descrizioni lunghe per i luoghi mai visitati prima e brevi se già visitati. Esistono altre due modalità che sono la breve (dà descrizioni brevi per tutti i luoghi, anche se mai visitati) e la completa (dà descrizioni lunghe per tutti i luoghi, anche se già visitati). A livello di codice, queste tre modalità possono essere impostate usando la variabile di libreria lookmode nella funzione Initialise, come segue:
Se lookmode vale 1, come nel nostro esempio, è impostata la modalità normale; se vale 2, è impostata la modalità completa e se invece vale 3 è impostata la modalità breve. A ogni modo, non dovete preoccuparvi se la descrizione della stanza visitata scompare: basta dare il comando "guarda" (o "g" in forma abbreviata) e tutto torna come prima (tranne però che nella modalità breve, dove le descrizioni non compaiono per tutta la durata del gioco).
Inform mette a disposizione delle istruzioni specifiche anche per collegare tra di loro gli oggetti in termini di direzioni. Come tutti ben sappiamo, in un’avventura testuale il giocatore può muoversi di locazione in locazione attraverso l’uso dei punti cardinali:
| ISTRUZIONE | COMANDO |
| n_to | "nord" o "n" o "vai a nord/n" |
| ne_to | "nordest" o "ne" o "vai a nordest/ne" |
| nw_to | "nordovest" o "no" o "vai a nordovest/no" |
| s_to | "sud" o "s" o "vai a sud/s" |
| se_to | "sudest" o "se" o "vai a sudest/se" |
| so_to | "sudovest" o "so" o "vai a sudovest/so" |
| e_to | "est" o "e" o "vai a est/e" |
| w_to | "ovest" o "o" o "vai a ovest/o" |
| u_to | "su" o "sopra" o "vai su/sopra" |
| d_to | "giù" o "sotto" o "vai giù/sotto" |
| in_to | "entra" o "vai dentro" |
| out_to | "esci" o "vai fuori" |
| cant go | "tutte le direzioni che non possono essere prese" |
ma è bene tenere presente che è anche possibile spostarsi da una locazione all’altra senza che esse siano necessariamente collegate tra di loro (avete presente il teletrasporto?). Questo è possibile grazie all’istruzione PlayerTo, che verrà spiegata verso la fine di questo capitolo.
Infine, focalizzando nuovamente la nostra attenzione sull’oggetto steps, diamo un’occhiata a tre nuovi attributi:
* scenery: in questo caso, viene usato per impedire a Inform di visualizzare il messaggio "Puoi anche vedere dei gradini scolpiti nella roccia qui." quando il giocatore si trova nel Grande Altopiano. L’oggetto in questione, inoltre, non può essere preso, spinto, tirato o girato;
* pluralname: indica che il nome dell’oggetto a cui si riferisce è plurale;
* door: questo attributo viene usato quando un oggetto deve fare da tramite tra due diverse locazioni. I gradini infatti, sono collegati da una parte al Grande Altopiano, e dall’altra alla Sala Quadrata: in questo modo, se il giocatore si trova nel Grande Altopiano può percorrerli verso il basso per esplorare i meandri più oscuri della piramide e poter così continuare la sua avventura. Occorre però fare molta attenzione a due proprietà fondamentali: door_dir che indica la direzione verso la quale si incontra la porta (in questo caso giù), e door_to che indica la stanza che si trova dietro la porta (in questo caso la Sala Quadrata). Ovviamente, la porta è aperta per la presenza dell’attributo open.

## Note

* ↑ mushroom_picked false è l’equivalente di mushroom_picked = false.
* ↑ if (self.mushroom_picked) è l’equivalente di if (self.mushroom_picked == true).
* ↑ Ricordatevi che has = ha e hasnt = non ha.
* ↑ Ricordatevi che tutte le variabili e le funzioni di libreria non hanno bisogno di essere dichiarate per poter essere utilizzate.
* ↑ Cliccate qui per scaricare il listato di questo esercizio (il file 4.03.inf).