========================================================================
GUIDA DI SOPRAVVIVENZA A INFIT VERSIONE 1.0
copyright (c) 1999 - 2000 by Giovanni Riccardi
========================================================================



NOTA 1:

Questo non vuole essere n un manuale n una guida di riferimento al
parser di Inform. Verranno discussi solo quegli argomenti che riguardano
strettamente la versione Italiana del parser.

NOTA 2:

Si assume che il lettore conosca (almeno le basi di) Inform: la
costruzione di oggetti, propriet e attributi, chiamata di routine. Gli
argomenti trattati saranno discussi in forma breve indicando il campo di
applicazione (o il problema da risolvere) e la sua soluzione. Il tutto
come una specie di FAQ.

RIFERIMENTI:

Su Inform e tutti gli aspetti che riguardano la programmazione in questo
linguaggio potete fare riferimento a "Inform Designer's Manual 3rd
Edition". di Graham Nelson.

E' in preparazione un manuale in Italiano. Per maggiori informazioni fare
riferimento a http://inform.composizioni.com/docs.htm


Giovanni Riccardi
Roma
9 Settembre 2000

************************************************************************

(1) DEFINIZIONE DEL GENERE DEGLI OGGETTI.
  
    Il parser di Inform  nato per riconoscere l'Inglese e la libreria
    Italiana ne , per la maggior parte, una traduzione. Come molti
    sapranno in Inglese non c' una distinzione di fatto tra nomi di
    genere maschile e femminile (per esempio nell'accordarsi con un
    aggettivo) e quindi non  necessario specificare il genere
    dell'oggetto in fase di programmazione. In Italiano questo 
    purtroppo necessario poich il parser deve poter scegliere il giusto
    messaggio da inviare al giocatore. Per esempio, se il giocatore
    scrive:
              
                >PRENDI SCATOLA
  
    il parser deve decidere se scrivere PRESA oppure PRESO.
    Tutto questo si risolve semplicemente aggiungendo un attributo  
    "female" agli oggetti di genere femminile. Il maschile viene
    riconosciuto automaticamente (o per meglio dire il parser assume che
    gli oggetti siano maschili, salvo poi specificare i femminili).
  
(2) DEFINIZIONE DEL NUMERO DEGLI OGGETTI.
  
    Come per l'Inglese si aggiunge un attributo "pluralname" alla
    definizione di un oggetto plurale.
      
(3) RICONOSCERE GENERE E NUMERO DEGLI OGGETTI.

    Nel corso della programmazione di un'avventura vi capiter
    certamente di dover fare riferimento ad un oggetto che non conoscete
    a priori, e nello stampare un messaggio, di dover conoscere il suo
    genere e il suo numero.
    La libreria italiana contiene la comoda funzione di stampa
    "GenderandNumber" che fa proprio questo. Essendo una funzione di
    stampa va chiamata nel seguente modo all'interno del codice:

                (genderandnumber) object

    Per esempio "Avventura" contiene una classe Treasure che identifica
    i tesori che il giocatore deve trovare. Nella definizione del tesoro
    viene specificato il suo genere e il suo numero. La classe per deve
    gestire i messaggi in modo che vadano bene per qualsiasi oggetto che
    vi appartiene. Ecco la definizione della classe con la gestione dei
    verbi Take (prendi) e Drop (posa, lascia):

  
-----------------------------------------------------------------------
    Class Treasure
    with depositpoints 10,
           after [; Take: if (location==Inside_Building)
                       score=score-self.depositpoints;
                       score=score+5;
                       if (noun hasnt treasure_found)
                      { give noun treasure_found;
                        treasures_found++;
                        score=score+2;
                      }
                      print "Pres", (genderandnumber) noun, "!";rtrue;
                  Drop: score=score-5;
                       if (location==Inside_Building)
                       { score=score+self.depositpoints;
                         print "Depositat", (genderandnumber) noun,
                         " al sicuro!";
                       } rtrue;             
              ];
  
-----------------------------------------------------------------------
  
(4) ALCUNE FUNZIONI DI STAMPA CONTENUTE NELLA LIBRERIA.  
  
    La libreria italiana contiene, per uso interno, alcune comode
    funzioni di stampa che per possono essere tranquillamente
    richiamate nella programmazione di un'avventura. Ecco l'elenco
  
    -- (thatorthose) obj  : stampa "quello, quella, quelli, quelle" a
                            seconda di genere e numero.
  
    -- (itorthem) obj     : stampa "lo, la, li, le" a seconda di genere
                            e numero.
  
    -- (citorthem) obj    : stampa "Lo, La, Li, Le" a seconda di genere
                            e numero.
  
    -- (cthatorthose) obj : stampa "Quello, Quella, Quelli, Quelle" a
                            seconda di genere e numero.
  
    -- (isorare) obj      : stampa "sono, " a seconda del numero.
  
    -- (cisorare) obj     : stampa "Sono, E'" a seconda del numero.
  
    -- (whomorwhich2) obj : stampa "il quale, la quale, i quali, le
                            quali" a seconda di genere e numero.
  

(5) ALTRE FUNZIONI DELLA LIBRERIA.
 
    Ecco un elenco delle funzioni contenute nella libreria. Quelle
    contrassegnate con una (B) contengono alcuni bug che devono essere
    ancora corretti. In questo caso testare la funzione il pi possibile
    prima di usarla in un gioco.   
  
    -- PrintInfinitive()  : restituisce la forma all'infinito del verbo
                            dato nell'ultimo comando.
    -- [B] PrintPrep()    : restituisce la preposizione (se esiste)
                            associata al verbo dato nell'ultimo comando.

(6) USO DEGLI ARTICOLI.

    Il parser sa usare gli articoli giusti a seconda del genere e del
    numero e seguendo alcune regole che provengono dalla grammatica
    italiana. Ci sono tre casi che dipendono dalla lettera iniziale di
    una parola:

     (a)  Parola che comincia con vocale
     (b)  Parola che comincia con z oppure s + consonante
          (oppure ps, pn, gn, x)
     (c)  Parola che comincia con altra consonante.

    Le parole che cominciano con ps, pn, gn e x (molto poche) dovrebbero
    seguire la regola (b), secondo la grammatica italiana. Nell'uso
    reale della lingua si tende a seguire la regola (c). La libreria
    segue la regola grammaticale. Se si vuole cambiarla, per accordarla    
    all'uso reale basta semplicemente specificare l'articolo nella
    definizione dell'oggetto (has article "").
    Per esempio da:
                "lo pneumatico, uno pneumatico" (default)
    a:
                "il pneumatico, un pneumatico"  (has article "il")

(7) PROMPT ALTERNATIVO.
  
    Se dichiarate un "Constant PROMPT" prima dell'inclusione dei file di
    libreria la vostra avventura user un prompt alternativo al classico
    ">". Il parser porr al giocatore domande del tipo "Cosa vuoi fare
    ora?", ecc.
  
(8) REPLACE.H

    Il file "replace.h" contiene (per ora) delle funzioni che
    sostituiscono alcune routine presenti nella libreria che stampavano
    le informazioni sulla versione della libreria stessa. Mettendo un
    "Include "replace"" subito dopo "Include "Verblib"" (importante
    metterlo subito dopo!) queste informazioni verranno tradotte in
    Italiano.


========================================================================
========================================================================