Appendice G: Glossario ====================== Durante la nostra avventura abbiamo incontrato alcuni termini che hanno un significato particolare nell'ambito del sistema di sviluppo per avventure testuali Inform: quelle che seguono sono delle brevi definizioni di molte di queste parole e frasi. *action* - vedi *albero degli oggetti* - una gerarchia che definisce le relazioni tra oggetti nei termini di chi contiene chi. Ogni può essere sia contenuto all'interno di un altro oggetto (il genitore) o _non_ contenuto; gli oggetti come le stanze che non si trovano in un altro oggetto hanno come genitore la nothing (0). Un oggetto contenuto in un altro oggetto è un figlio. Ad esempio per una scarpa all'interno della scatola: la scatola è il genitore della scarpa e la scarpa è un figlio della scatola. Adesso supponiamo che la scatola si trovi nell'armadio. La scatola è un figlio dell'armadio, ma la scarpa è ancora un figlio della scatola, non dell'armadio. In un gioco normale l'albero degli oggetti subirà numerose trasformazioni in seguito alle attività del giocatore. *alpha-testing* - (anche alfa test) il test che viene fatto dal creatore del gioco, in un vano tentativo di assicurarsi che faccia tutto ciò che dovrebbe e niente di quello che non dovrebbe. Vedere anche . *analizzatore sintattico* - vedi *argomento* - un parametro fornito in una chiamata ad una , che diventa il valore di una delle variabili locali definite nella routine. Ad esempio l'argomento è 8 nella chiamata a MiaRoutine(8). La definizione della routine include la variabile che conterrà l'argomento, nel nostro caso x: [MiaRoutine x; ... ]; *argument* - vedi *assegnazione* - un'istruzione che imposta o cambia il valore di una . Ce ne sono tre in Inform: = (imposta uguale a), ++ (aggiungi uno al valore corrente), -- (sottrai uno dal valore corrente). *attribute* - vedi *attributo* - con nome che possono essere definiti per un oggetto dopo la parola chiave has [ha]. Un attributo può essere presente (on/acceso) o non presente (off/spento). Lo scrittore può verificare in ogni parte del programma se [if] un oggetto ha [has] un determinato attributo, dare [give] un attributo ad un oggetto o levarglielo a seconda delle necessità. Ad esempio l'attributo container [contenitore] indica che l'oggetto è in grado di contenere altri oggetti al suo interno. *avatar* - vedi *azione* - l'effetto generato dall'input del giocatore, trattato solitamente dal od anche dal codice dello scrittore di avventure. Si riferisce ad un singolo compito che deve essere processato da Inform, come in LASCIA IL BRICCO, ed è memorizzato in quattro numeri: uno per l'azione ed uno per l'oggetto actor [attore] che la esegue (il giocatore od un ), uno per il noun (il complemento oggetto), chiamato anche oggetto diretto se presente, ed un quarto numero per il secondo noun, se esiste, come ad esempio la "TEIERA" in TIRA IL BRICCO ALLA TEIERA. *banner* - le informazioni riguardanti il gioco che vengono mostrate all'inizio della partita. *beta-testing* - (anche beta test) il test che viene effettuato da una banda di fidati volontari, prima del rilascio al pubblico, durante il quale la rozza inadeguatezza dell' dello scrittore viene, dolorosamente, a galla. *binary file* - vedi *blocco istruzioni* - un gruppo di che si trova tra parentesi graffe {...} e che vengono trattate come un'unità singola, come se fossero un'unica istruzione. Solitamente compaiono nei cicli e nelle condizioni. *bold type* - vedi *child* - (figlio) vedi *class* - uno speciale modello di dal quale altri oggetti possono ereditare ed . Il modello deve cominciare con la parola chiave Class e deve avere un identificatore interno. Gli oggetti che desiderano ereditare da una classe di solito cominciano con l'ID interno della classe al posto della parola Object, ma possono anche definire un segmento class seguito dall'ID interno della classe. Lo scrittore di avventure può verificare se un oggetto appartiene ad (se è un membro di) una classe. *classe* - vedi *code block* - vedi *codice sorgente* - vedi *commento* - del testo che comincia con un punto esclamativo ! e che viene ignorato dal quando legge il ; usato per migliorare l'aspetto del file od aggiungere note di spiegazione. *compilatore* - un programma che legge il codice sorgente scritto dal programmatore e lo trasforma in uno che può essere giocato con un Z-Machine. *compile-time* - vedi *compiler* - vedi *corsivo* - usato per enfatizzare, e come un indicatore che rappresenta un valore che dovete fornire. *costante* - un particolare valore che viene definito a che resta sempre lo stesso e non può essere cambiato mentre il gioco è in esecuzione. Esempi comuni comprendono i numeri, le stringhe e gli ID interni degli oggetti, ognuno dei quali può essere scritto esplicitamente oppure impostato come il valore di una costante con nome (con la parola chiave Constant). *default* - il valore predefinito di un determinato elemento, usato in mancanza di un'assegnazione esplicita. *designer* - vedi *dictionary word* - vedi *dictionary* - vedi *directive* - vedi *direttiva* - una riga di codice Inform che chiede al di fare qualcosa in quel punto, a ; un tipico esempio è quello di voler includere (Include) il contenuto di un altro file, oppure di riservare dello spazio nello per poterci memorizzare il valore di una variabile. Da non confondere con un', che chiede al di creare un comando che verrà eseguito dall'interprete a : un tipico esempio è quello di far visualizzare un testo o di cambiare il valore contenuto nello spazio di immagazzinamento di una variabile. *dizionario* - l'insieme di tutte le parole in input che il gioco "capisce". *editor* - un programma che si usa per creare e modificare i . *entry point* - vedi *ereditarietà* - il processo tramite il quale un appartenente ad una acquisisce le e gli di quella classe. L'ereditarietà è automatica, lo scrittore di avventure deve solo creare le definizioni delle classi, seguite dagli oggetti che hanno quelle classi. *false* - uno stato logico che è l'opposto di , rappresentato dal valore 0. *falso* - vedi *figlio* - vedi *file ASCII* - vedi *file binario* - un file del computer che contiene dati binari (tutti 0 e 1) che viene creato da un programma e che solo un programma può capire. *file della libreria* - i file che contengono il codice sorgente della . Sostanzialmente sono tre se scrivete un gioco in Inglese (sebbene questi tre includano anche altri file): parser.h, verblib.h e grammar.h e devono essere inlcusi in ogni gioco Inform. In Italiano i file da includere sono quattro: parser.h, verblib.h, replace.h e italiang.h. *file sorgente* - un file di testo che contiene il vostro gioco definito usando il linguaggio Inform. *file testo* - un file del computer che contiene parole e frasi che una persona può leggere. *file Z-code* - vedi *flag* - una variabile che può contenere solo due possibili valori. *function* - vedi *funzione* - vedi *genitore* - vedi *giocatore* - l'utente finale del gioco, di solito è una persona piena di opinioni radicali riguardo le vostre capacità di scrittore. Vedi anche *grassetto* - usato per evidenziare un termine spiegato in questo glossario. *ICGAT* - il newsgroup it.comp.giochi.avventure.testuali per la comunità italiana di scrittori e giocatori di IF. *inheritance* - vedi *interprete* - un programma che legge lo di un gioco e consente alle persone di giocarci. Gli interpreti sono specifici per ogni piattaforma (cioè sono programmi differenti per ogni sistema operativo) consentendo quindi allo story file di essere universale ed indipendente dalla piattaforma. *istruzione* - un comando che deve essere eseguito a . Vedere anche . *library* - vedi *libreria* - un gruppo di file di testo, facenti parte del sistema Inform, che include il , le definizioni per il , i file delle lingue, le definizioni della grammatica ed un insieme di risposte predefinite e comportamenti standard alle azioni del giocatore. La libreria fa delle chiamate molto frequenti al gioco per vedere se il programmatore vuole evitare questi comportamenti predefiniti. *model world* - l'ambiente immaginario nel quale il personaggio del giocatore vive. *modello del mondo* - vedi *modo Debug* - un'opzione che fa in modo che il includa del codice aggiuntivo nello così da rendere più semplice per il programmatore capire cosa sta succedendo mentre un gioco viene testato prima del rilascio. Vedere anche *modo Strict*. *modo Strict* - un'opzione che fa in modo che il includa del codice aggiuntivo nello così che sia più semplice individuare determinati errori di progettazione mentre si sta giocando. Questo modo attiva automaticamente il . *newline* - il carattere di controllo ASCII usato per indicare la fine di una riga di testo. *newsgroup* - conosciuti anche come forum e gruppi di discussione. *NPC* - (non-player character) vedi *object tree* - vedi *object* - vedi *oggetto* - un gruppo di e unite insieme in un'unità coerente. Gli oggetti rappresentano le cose che creano il (una torcia, una macchina, un raggio di luce, ecc.), è un qualcosa che organizza il codice del programmatore in pezzi distinti, facili da trattare. Ogni oggetto ha due parti: l'intestazione, che comprende l'ID interno, il nome esterno ed i suoi parenti definiti (tutti i campi sono opzionali), ed il corpo, che comprende le variabili di proprietà ed i flag degli attributi specifici di quell'oggetto (se ce ne sono). *parent* - (genitore) vedi *parola del dizionario* - una parola scritta tra apici '...' nel , di solito (ma non solo) è uno dei valori assegnati alla proprietà name di un oggetto. Tutte quelle parole vengono memorizzate nel , che viene interrogato dal quando cerca di capire il comando del giocatore. Solo i primi nove caratteri vengono presi in considerazione (quindi 'cardiogramma' e 'cardiografo' vengono trattati come se fossero la stessa parola). Si usa 'monete//p' per impostare "monete" come plurale, riferendosi a tutti gli oggetti moneta che sono presenti. Si usa 't//' per inserire la parola di un solo carattere "t" nel dizionario ('t', invece, è una costante che rappresenta un valore carattere). *parser* - il parser è quella parte della che si prende cura di analizzare l'input del giocatore e cerca di capire cosa vuole, dividendolo in parole (verbi, nomi), e confrontando il tutto con le parole che sono memorizzate nel del gioco e con le azioni definite nella grammatica. Se l'input del giocatore ha un qualche significato il parser attiva l' risultante, altrimenti si lamenta dicendo che non capisce cosa è stato scritto. *PC* - 1. un personal computer; 2. il personaggio del giocatore (vedi ) *PG* - il personaggio del giocatore. Vedi *player* - la variabile che si riferisce all' (conosciuto anche come "avatar") che rappresenta il giocatore all'interno del . Vedi anche *PNG* - personaggio non giocatore/personaggio non giocante: un qualunque personaggio che non è il protagonista. Spazia dai "nemici" agli amanti, da un gerbillo domestico fino ad un pedone incontrato per caso. *print rule* - la regola da applicare in un'istruzione print o print_ret per controllare la maniera con la quale un determinato dato deve essere visualizzato. Ad esempio: print (The) noun, "@`e qui." dice al gioco di usare l'articolo definito con la prima lettera maiuscola per noun. La definisce un insieme di print rule, e lo scrittore può aggiungere le proprie. *properties* - vedi *property* - vedi *proprietà* - variabili associate ad un singolo del quale fanno parte. Vengono definite nel corpo dell'oggetto dopo la parola chiave with ed hanno un nome ed un valore. Quest'ultimo (che per impostazione predefinita vale 0) può essere un numero, una stringa "...", una parola del dizionario '...' od una routine embedded [;...]; può anche essere una elenco di questi separati da spazi. Il valore della proprietà di un oggetto può essere letto e modificato in ogni punto del gioco. Anche il fatto che un oggetto disponga di una determinata proprietà può essere verificato. *punto d'ingresso* - una tra un elenco predefinito di routine opzionali che, se fornita, verrà chiamata dalla libreria per produrre dell'output aggiuntivo o per restituire un valore che cambi il comportamento standard della libreria. *RAIF* - il newsgroup rec.arts.int-fiction per gli scrittori di IF. *RGIF* - il newsgroup rec.games.int-fiction per i giocatori di IF. *room* - vedi *routine della libreria* - una tra un insieme di routine incluse come parte della che il programmatore può chiamare per eseguire alcuni utili compiti comuni. *routine embedded* - una routine che viene definita nel corpo di un oggetto, come valore di una delle sue . Diversamente da una , una routine embedded non ha un nome e restituisce false quando l'esecuzione raggiunge la parentesi quadra chiusa ] che ne indica il termine. *routine incorporata* - vedi *routine standalone* - una routine che non fa parte di un oggetto. Diversamente da una deve avere un proprio nome e restituisce true quando l'esecuzione raggiunge la parentesi quadra chiusa ] che ne indica il termine. *routine* - in termini generali una routine è un programma per computer che effettua alcuni calcoli specifici, seguendo un insieme ordinato di istruzioni: è la sola unità di codice coerente ed eseguibile conosciuta da Inform. In pratica una routine è un insieme di che sono scritte tra gli idenfitificatori [...]. Quando una routine viene "chiamata", possibilmente con degli argomenti (valori specifici per le sue variabili definite, se ce ne sono), l'interprete esegue le sue istruzioni in sequenza. Se l'interprete incontra un'istruzione return, o raggiunge la ] alla fine della routine, termina immediatamente l'esecuzione delle istruzioni della routine e riprende l'esecuzione dall'istruzione che ha chiamato la routine. Ogni routine restituisce un valore, che può essere fornito dall'istruzione return oppure è causato dalla ] alla fine della routine. Vedere anche e . *run-time* - vedi *scrittore* [di avventure] - la persona che usa Inform per creare un'avventura testuale: in altre parole, gentile lettore, tu. *source file* - vedi *stanza* - un che definisce un'unità geografica nella quale il è diviso. Le stanze non hanno oggetti genitore (più precisamente, il loro oggetto genitore è nothing) e rappresentano i posti nei quali il personaggio del giocatore si trova in un determinato momento: il personaggio del giocatore non può trovarsi in più di una stanza alla volta. Fate caso al fatto che "stanza" non implica necessariamente "all'interno". Un prato, una spiagga, la cima di un albero od anche galleggiare nello spazio: questi sono tutti possibili oggetti stanza. *statement* - vedi *story file* - un file binario che è l'output del e che può essere giocato attraverso l'uso di un (viene anche chiamato file Z-code o game file). Il formato degli story file è standard ed indipendente dalla piattaforma. *stringa* - una parte di testo racchiusa tra virgolette "..." per essere mostrata al giocatore a . *switch* - 1. una parola chiave opzionale od un simbolo che attivano funzionalità speciali del compilatore. 2. un'istruzione che sceglie tra diversi percorsi di esecuzione in base al valore di un'espressione. *tempo di compilazione* - si intende per "tempo di compilazione" il tempo durante il quale il lavora per produrre lo (l'espressione usata di solito è "a tempo di compilazione"). Vedi anche . *tempo di esecuzione* - il periodo di tempo nel quale l' sta eseguendo uno (cioè qualcuno sta giocando con il gioco). Vedere anche . *true* - uno stato logico che è l'opposto di , rappresentato da qualunque valore diverso da 0 (solitamente 1). *variabile globale* - una variabile che non è specifica di una routine o di un oggetto e che può essere usata da ogni routine od oggetto nel gioco. *variabile locale* - una variabile che fa parte di una determinata : il suo valore non è accessibile alle altre routine del gioco. Il valore di una variabile locale _non_ viene conservato tra una chiamata alla routine e le successive. *variabile* - un valore con nome che può cambiare a . Deve essere dichiarata prima del suo uso, sia come variabile globale (disponibile ad ogni routine del gioco) che come variabile locale (parte di una specifica routine ed utilizzabile solo da quella routine). Le variabili hanno un nome ed un valore; è il valore che cambia, non il nome. Le degli oggetti si comportano come variabili. *vero* - vedi *Z-Machine* - una macchina virtuale (un computer immaginario simulato dall') nella quale vengono eseguiti gli . La Z sta per "Zork", il primo titolo della Infocom.