# Inform e Glulx/Inform e ancora Inform/La Status Line

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

## La Status Line

Se qualcuno di voi ha pensato che Inform si possa fermare al solo Capitolo 4, beh... inutile dire che si è sbagliato di grosso; d’altra parte, un linguaggio di programmazione non si pone dei limiti particolari (anche se qualcuno ha fatto giustamente notare che Inform non appartiene alla famiglia dei linguaggi di programmazione general-purpouse - con Inform, cioè, potete scrivere solo delle avventure testuali).
Iniziamo subito con la status line. Con questo termine si intende la barra in alto che compare nella finestra di Windows Frotz 2002 (o in qualsiasi altro interprete Z-code) quando iniziate a giocare ad un’avventura testuale :
Di default, appaiono il nome della stanza in cui si trova il giocatore e due numeri che indicano rispettivamente il punteggio e il numero di mosse che si stanno effettuando durante il gioco. Tuttavia, non è così chiaro al giocatore quale dei due numeri indica il punteggio e quale il numero di mosse. È molto meglio una status line del tipo:
che si può tranquillamente ottenere grazie al seguente codice:
Come si può facilmente intuire, la funzione che si occupa dell’inizializzazione della status line si chiama in Inform DrawStatusLine. L’istruzione StatusLineHeight stabilisce di quante righe la status line deve essere costituita (nel nostro caso una), mentre l’istruzione MoveCursor posiziona il cursore del testo ad una posizione ben precisa della status line (visualizzata sullo schermo grazie all’istruzione spaces width; ) dopo aver specificato un certo numero di riga (nel nostro caso 1) e di colonna (il numero contenuto nella variabile locale width, che viene inizializzata la prima volta – tramite l’istruzione ScreenWidth – alla lunghezza dell’intero schermo). Sottraendo poi un certo valore alla variabile locale width, spostiamo di n posizioni a sinistra il testo che viene successivamente stampato a video (il punteggio); viceversa, sommando un certo valore alla variabile omonima, spostiamo di n posizioni più a destra il testo che viene successivamente stampato a video (il numero di mosse o d’azioni). Fatto questo, segue l’istruzione MainWindow che fa in modo che il cursore punti alla finestra principale.
Tuttavia, come fa giustamente notare Paolo Lucchesi, la funzione DrawStatusLine così com’è porta una semplificazione pericolosa nel non andare a cercare il Visibility Level. Se il giocatore si trova ad esempio in una cassa chiusa, sulla status line viene mostrata solo la cassa e non il nome della stanza (che non risulta visibile al giocatore). Ecco allora come riscrivere la funzione:
Se vogliamo invece cambiare le parole Punti e Azioni rispettivamente in Punteggio e Turni, dobbiamo ricorrere all’utilizzo delle variabili di libreria score (per il punteggio) e turns (per il numero d’azioni):
Ricordatevi inoltre, che per essere utilizzata, la funzione DrawStatusLine deve essere sempre messa dopo l’istruzione Include "Parser", a sua volta preceduta dall’istruzione Replace DrawStatusLine.
E se la status line non ci piace e vogliamo eliminarla? Basta definire la funzione DrawStatusLine come segue:
Provare per credere...

## Note

* ↑ In realtà, alcuni programmatori si sono divertiti a scrivere degli "abuse", ovvero dei listati Inform che non sono però delle avventure testuali. Devono tuttavia essere considerati - soprattutto in virtù delle limitate capacità grafiche di questo linguaggio - degli esperimenti di programmazione piuttosto che dei programmi veri e propri, che meritano comunque di essere studiati (anche se parzialmente) se non altro per alcuni effetti particolarmente interessanti. Li potete scaricare, gratuitamente, all’indirizzo ftp://ftp.ifarchive.org/if-archive/games/source/inform/. Paolo Lucchesi, inoltre, ha scritto una libreria (la cyoa.h) che permette di usare Inform per creare delle avventure testuali a scelte multiple (più conosciute da alcuni come libri-game).
* ↑ Questo inconveniente si verifica o meno a seconda della grandezza della finestra (o, se preferite, dello schermo) di Windows Frotz 2002. Di "default", infatti, la status line visualizza entrambe le scritte ma – come potete ben vedere – questo non rappresenta affatto una garanzia e di conseguenza è sempre meglio inizializzarla.
* ↑ Cliccate qui per scaricare i listati di questi esercizi (i file 5.01_1.inf, 5.01_2.inf e 5.01_3.inf).