Inform e Glulx/Inform e ancora Inform/La Status Line: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
Gian BOT (discussione | contributi)
m Bot: sostituzione tag obsoleti
Riga 38:
.
 
Come si può facilmente intuire, la funzione che si occupa dell’inizializzazione della status line si chiama in Inform <ttcode>DrawStatusLine</ttcode>. L’istruzione <ttcode>StatusLineHeight</ttcode> stabilisce di quante righe la status line deve essere costituita (nel nostro caso una), mentre l’istruzione <ttcode>MoveCursor</ttcode> posiziona il cursore del testo ad una posizione ben precisa della status line (visualizzata sullo schermo grazie all’istruzione <ttcode>spaces width;</ttcode> ) dopo aver specificato un certo numero di riga (nel nostro caso 1) e di colonna (il numero contenuto nella variabile <ttcode>locale width</ttcode>, che viene inizializzata la prima volta – tramite l’istruzione <ttcode>ScreenWidth()</ttcode> – alla lunghezza dell’intero schermo). Sottraendo poi un certo valore alla variabile locale <ttcode>width</ttcode>, 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 <ttcode>n</ttcode> posizioni più a destra il testo che viene successivamente stampato a video (il numero di mosse o d’azioni). Fatto questo, segue l’istruzione <ttcode>MainWindow</ttcode> che fa in modo che il cursore punti alla finestra principale.
 
Tuttavia, come fa giustamente notare Paolo Lucchesi, la funzione <ttcode>DrawStatusLine</ttcode> così com’è porta una semplificazione pericolosa nel non andare a cercare il <ttcode>Visibility Level</ttcode>. 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:
 
[DrawStatusLine width;
Riga 65:
];
 
Se vogliamo invece cambiare le parole <ttcode>Punti</ttcode> e <ttcode>Azioni</ttcode> rispettivamente in <ttcode>Punteggio</ttcode> e <ttcode>Turni</ttcode>, dobbiamo ricorrere all’utilizzo delle variabili di libreria <ttcode>score</ttcode> (per il punteggio) e <ttcode>turns</ttcode> (per il numero d’azioni):
 
[DrawStatusLine width;
Riga 78:
];
 
'''Ricordatevi inoltre, che per essere utilizzata, la funzione <ttcode>DrawStatusLine</ttcode> deve essere sempre messa dopo l’istruzione <ttcode>Include "Parser"</ttcode>, a sua volta preceduta dall’istruzione <ttcode>Replace DrawStatusLine</ttcode>'''<ref>Cliccate [http://www.vincenzoscarpa.it/inform/manuale/Capitolo5_esercizi.zip qui] per scaricare i listati di questi esercizi (i file '''5.01_1.inf''', '''5.01_2.inf''' e '''5.01_3.inf''').</ref>.
 
E se la status line non ci piace e vogliamo eliminarla? Basta definire la funzione <ttcode>DrawStatusLine</ttcode> come segue:
 
[ DrawStatusLine; ];