Seconda versione, 2 dicembre 2004.
Prima versione, 15 novembre 2004.
Questo manuale fa riferimento alla versione 1.4 di JIF, scaricabile dal sito ufficiale dell'autore.
Si assume che il lettore sia abbastanza pratico di Inform. In caso contrario, rimando a documentazioni che sono indirizzate esclusivamente a questo linguaggio di programmazione:
In ItalianoNota dell'autore:
Spero che questo manuale su JIF
possa essere d'aiuto a chi voglia avvicinarsi a questa dimensione narrativa che
ritengo assolutamente affascinante.
Questo manuale è stato scritto per voi,
non per me.
Quindi se avete domande, correzioni o segnalazioni da fare, non
esitate a scrivermi.
Asti
15 novembre 2004
Alessandro
Schillaci
silver.slade@tiscali.it
Jif è un editor scritto in java che permette di gestire avventure testuali scritte in Inform: con questo programma, è possibile editare i sorgenti, compilarli (tramite un compilatore) ed eseguirli (tramite un interprete).
JIF non è solo un semplice editor di file inform: mette infatti a disposizione molte funzioni che possono semplificare e velocizzare la creazione di avventure testuali.Per esempio, grazie al mapping automatico dei caratteri, si possono tranquillamente utilizzare i caratteri speciali (es:è,ò,à..) che verranno poi trasformati automaticamente da JIF in formato ZSCII.
La gestione della fase di compilazione è realizzata tramite un pannello dove è possibile scegliere quale switch attivare quando si compila.
torna all'indiceJIF è disponibile per i seguenti sistemi operativi:
L'installazione su ambienti Windows, si avvale di un installer, cioè di un programma di installazione che si occupa di installare in maniera automatica JIF sul proprio computer.
Sono possibili due tipi di installazioni: una che riguarda una versione completa di JIF (chiamata Mega Pack) che include tutti i tool che servono per la compilazione ed esecuzione dei programmi scritti in Inform, e una versione con solo JIF, senza alcun tool.
In questo secondo caso si devono scaricare separatamente altre utility quali
il compilatore e l'interprete Inform, le librerie Inform italiane (le INFIT2.5 o
superiori): questo tipo di installazione è indirizzata a utenti esperti.
torna
all'indice
Questa installazione di JIF è pre-configurata (cioè una volta installata, non necessita di ulteriori configurazioni) e comprende i seguenti componenti:
In queste istruzioni per PATH_DI_INSTALLAZIONE si intende la directory scelta dall'utente per l'installazione di JIF (per esempio: C:\Programmi\JIF)
In queste istruzioni per PATH_DI_INSTALLAZIONE si intende la directory scelta dall'utente per l'installazione di JIF (per esempio: \usr\bin\)
Dopo aver installato JIF correttamente, la struttura delle directory dovrebbe essere come questa:
Dopo aver installato correttamente il programma, ecco una prima immagine del vostro nuovo ambiente di lavoro per Inform.
Si possono evidenziare 6 zone particolari:
Quando JIF è stato installato correttamente, è possibile cominciare a
lavorare in Inform. Inizieremo a scrivere un piccolo esempio.
Create un nuovo
file. Questa operazione si può effettuare in 3 modi:
Copiate il testo seguente e incollatelo nella nuova pagina che verrà aperta (nella Textarea principale [1]).
!--------------------------------! ! Primo esempio di codice Inform !--------------------------------! Constant Story "Primo esempio di Inform"; Constant Headline "^Scritto in Inform con JIF^"; Include "Parser"; Include "VerbLib"; Include "Replace"; ! Gioco Object room "La tua prima stanza" with description "Ti trovi nella tua prima stanza della tua avventura.", has light; ! Grammatica Include "ItalianG"; [Initialise; location = room; "Ecco il testo che introduce la tua avventura testuale^^"; ];
File C:\Jif\games\esempio.inf salvato Fase di compilazione.... C:\Jif\compiler\inform.exe -v5 +language_name=italian +include_path=C:\Jif\games,C:\Jif\lib C:\Jif\games\esempio.inf C:\Jif\games\esempio.z5 Inform 6.30 for Win32 (27th Feb 2004) Using Infit v2.5 / Serial: 041014 / (c) 2004 by Giovanni Riccardi OK.
La directory games ora dovrebbe contenere un nuovo file con nome esempio1.z5. Questo file è il file utilizzato dall'interprete.
Nel caso di installazione da zero (quella per esperti), se qualcosa non dovesse funzionare nel verso giusto, controllate i path del compilatore/interprete. In caso di errori o warning in fase di compilazione, è sufficiente eseguire un doppio click del mouse sulla finestra di output, in prossimità della riga che segnala l'errore (o warning). In questo modo, JIF aprirà il sorgente alla riga in corrispondeza dell'errore segnalato dal compilatore.
torna all'indiceSono disponibili due tipi di menu a pop-up: vengono attivati con il tasto destro del mouse quando il mouse si trova su:
Cliccando con il tasto destro del mouse sulla Textarea principale [1], viene mostrato un menu speciale:
Le azioni principali di questo menu sono:
Con JIF è possibile creare dei progetti: semplicemente rappresentano un raggruppamento logico di sorgenti Inform (ma possono essere in teoria anche file di testo per la trama dell'avventura, oppure file *.h di libreria). Cliccando con il tasto destro del mouse sul Pannello dei progetti [4], viene mostrato un menu speciale:
Le azioni principali di questo menu sono:
Crea un nuovo progetto. I nuovi progetti sono file memorizzati nella directory projects. Questi file sono creati da JIF, quindi non dovrebbero essere in nessun caso modificati a mano. All'interno di ogni file di progetto, oltre che ai file che fanno parte del progetto stesso, verranno memorizzate anche altre informazioni:
Quindi è possibile avere diversi progetti con impostazioni personalizzate.
Se la vostra avventura è abbastanza complessa, allora è consigliabile utilizzare la gestione a progetti. Per avventure brevi, è possibile avere un solo file sorgente e la gestione a progetti è superflua. Dopo aver creato il file esempio1.inf, creare con la stessa procedura un nuovo file. Copiare ed incollare il seguente testo:
Object seconda_stanza "La seconda location" with description "Sei nella seconda stanza della tua avventura. ^Puoi andare a nord.", n_to room has light; Object -> libro "un libro" with name 'libro', article "tuo", description "Questo è il primo oggetto della tua avventura!";
Salvarlo con nome esempio2.inf.
Selezionare il file precedentemente creato (esempio1.inf): rimuovere il codice compreso tra i commenti ! GIOCO e ! GRAMMAR e incollare al suo posto, il seguente codice:
Object room "La tua prima stanza" with description "Ti trovi nella tua prima stanza della tua avventura. C'è un passaggio verso sud.", s_to seconda_stanza, has light; Include ">esempio2";
Il codice finale del file esempio1.inf, dovebbe essere costituito dal seguente codice:
!--------------------------------! ! Primo esempio di codice Inform !--------------------------------! Constant Story "Primo esempio di Inform"; Constant Headline "^Scritto in Inform con JIF^"; Include "Parser"; Include "VerbLib"; Include "Replace"; ! Gioco Object room "La tua prima stanza" with description "Ti trovi nella tua prima stanza della tua avventura. C'è un passaggio verso sud.", s_to seconda_stanza, has light; Include ">esempio2"; ! Grammatica Include "ItalianG"; [Initialise; location = room; "Ecco il testo che introduce la tua avventura testuale^^"; ];
Selezionare il file esempio1.inf e lanciare la compilazione con . Eseguire l'avventura, usando
. In questo modo
abbiamo incluso il file esempio2.inf all'interno del file
esempio1.inf. Ecco quello che vedremmo, lanciando in esecuzione la nostra
avventura.
Possiamo osservare che se viene selezionato per errore il file esempio2.inf e lanciata la compilazione, si verificheranno errori di compilazione.
Questo perchè stiamo cercando di compilare il file sbagliato: dato che il file principale è esempio1.inf, è corretto lanciare la compilazione passando al compilatore quest'ultimo file. Vedremo come utilizzare la gestione dei progetti su JIF, per semplificare e velocizzare il processo di compilazione.
Utilizziamo la gestione a progetti di JIF per gestire i due sorgenti che
abbiamo appena creato. Ovviamente la gestione di un progetto è indicata per
progetti che siano costituiti da un numero elevato di file. Questo esempio deve
semplicemente spiegare come creare un progetto con JIF.
Procediamo.
Chiudiamo tutti i file aperti con JIF, utilizzando il menu [File|Chiudi
tutti i File] (oppure cliccando su ).
Ecco la procedura per creare un nuovo progetto costituito dai due sorgenti:
Per verificare il tutto, possiamo aprire i due file e selezionare il file
esempio2.inf. Lanciamo la compilazione con : in questo caso, JIF userà il Main file per
la compilazione e non si verificheranno errori di compilazione.
Il funzionamento stardard di JIF, prevede di effettuare la compilazione del file corrente. Tornando all'esempio dei file creati in precedenza: selezionando il file esempio1.inf e lanciando la compilazione (senza la creazione di un progetto), la compilazione viene eseguita correttamente.
Se si seleziona il secondo file (esempio2.inf) e si effettua la compilazione standard, JIF cercherà di compilare questo file, senza successo. Questa gestione della compilazione è corretta solo nel caso si abbia un solo sorgente: nel nostro caso, il file esempio1.inf include il file esempio2.inf.
La soluzione consiste nell'utilizzo di un file di progetto: si tratta di un semplice "raggruppamento" logico di file con la possibilità di salvare informazioni extra. Utilizzando un progetto, infatti, è possibile per esempio impostare un Main File che viene utilizzato (se impostato) per la compilazione effettiva del progetto. L'informazione relativa al Main File, viene mantenuta al salvataggio del progetto, ed è sempre possibile impostare un nuovo Main File utilizzando il menu pop-up
Ogni progetto include il salvataggio delle impostazioni utilizzate da JIF. Quindi vengono memorizzate le informazioni riguardo:
In generale per piccole avventure, è possibile l'utilizzo di un solo file sorgente. Per avventure più complesse e di una certa lunghezza, è consigliabile utilizzare diversi sorgenti, riuniti in un progetto.
torna all'indice![]() |
Nuovo File. Crea un nuovo file vuoto |
![]() |
Apri. Apre uno o più file |
![]() |
Salva |
![]() |
Salva Tutto. Salva tutti i file correntemente aperti |
![]() |
Salva con Nome |
![]() |
Chiudi. Chiude il file attualmente selezionato |
![]() |
Chiudi tutti i File. Chiede conferma per i file che hanno subito modifiche |
![]() |
Stampa |
![]() |
Taglia |
![]() |
Copia |
![]() |
Incolla |
![]() |
Annulla |
![]() |
Ripristina |
![]() |
Sostituisci |
![]() |
Cerca |
![]() |
Informazioni sulla versione di JIF in uso |
![]() |
Esci da JIF |
![]() |
Commenta il testo selezionato |
![]() |
Rimuove il commento dal testo selezionato |
![]() |
Shift a sinistra il testo selezionato |
![]() |
Shift a destra il testo selezionato |
![]() |
Effettua un controllo formale sul sorgente selezionato: eventuali parentesi non chiuse o non aperte, vengono segnalate |
![]() |
Esegue l'avventura selezionata, lanciando l'interprete selezionato dal Pannello di configurazione |
![]() |
Mostra una pop-up dalla quale è possibile scegliere quale simbolo inserire. Il file di testo relativo alla lista di simboli che è possibile inserire, è symbols.ini nella directory config. Questo file è configurabile a piacere: basta editarlo con un editor di testo qualsiasi |
![]() |
Mostra una pop-up che visualizza la lista di oggetti definiti nel file sorgente |
![]() |
Mostra una pop-up che visualizza la lista di tutte le funzioni che sono contenute nei file posizionati all'interno della directory lib |
![]() |
Visualizza le principali informazioni del file corrente |
![]() |
Questa funzione, estrae tutte le stringhe del sorgente e le memorizza in un file secondario chiamato translate.txt all'interno della directory games. Può essere utile nel caso di traduzioni da una lingua all'altra oppure se si desidera effettuare un controllo di sintassi utilizzando un programma esterno |
![]() |
Viene creato un nuovo file (translated.inf), che contiene le traduzioni delle stringhe prelevate dal file translate.txt |
![]() |
Viene lanciato l'interprete impostato nel Pannello delle Impostazioni. |
![]() |
Viene visualizzato lo Switch Manager, che consente di indicare quali switch sono attivati in fase di compilazione |
![]() |
Apre il Pannello di Configurazione: da qui è possibile impostare le opzioni di JIF |
![]() |
Apre il Template Manager |
![]() |
Commenta il testo selezionato |
![]() |
Selezionando un file che contiene Template, è possibile scegliere quali template importare nella versione locale di JIF |
Per switch si intendono i parametri che vengono passati in linea di comando al compilatore inform. Nell'esecuzione di una avventura scritta in italiano:
infrmw32.exe -v5 +language_name=italian +include_path=C:\Jif\lib C:\Jif\games\Esempio.inf C:\Jif\games\Esempio.z5-v5 è uno switch che segnala al compilatore il tipo di file (.z5) da produrre in output.
Con JIF è possibile personalizzare un elenco di switch che possono essere utilizzati in fase di compilazione. Nel caso di switch nuovi, aggiunti in versioni "future" del compilatore, basta aggiungere lo switch nuovo in un file di configurazione, per avere JIF aggiornato e perfettamente allineato con il compilatore utilizzato.
I Template rappresentano un modo di riusare classi, funzioni e oggetti: è possibile creare una sorta di libreria di parti di codice riusabile.
Selezionare il menu [Template/Template manager] oppure con il tasto
Viene
visualizzato il Pannello relativo al Template Manager.
I template statici si comportano come frammenti di codice con alcune
informazioni aggiuntive (versione, autore ecc).
Selezionando il template
statico da utilizzare, verrà inserito nel sorgente corrente il codice
selezionato.
Esempio:
I template dinamici si comportano come frammenti di codice da "personalizzare" con l'utilizzo di parametri.
Esempio di Template Dinamico:
Class tesoro with punti 10, after [; Take: if (location==§*stanza§) "Preso!"; ];
Il testo inserito nei caratteri "§*" e "§" è considerato parametro, cioè inseribile dall'utente in fase di utilizzo del template dinamico. Quando l'utente utilizza il template dinamico, gli verrà chiesto di inserire il valore del parametro ("stanza"), che verrà utilizzato per l'inserimento del template all'interno del codice.
torna all'indiceMolte delle caratteristiche di JIF possono essere facilmente personalizzate per soddisfare diverse esigenze.
Gestisce i colori diversi per tipo di parola inserita nel sorgente Inform.
File | syntax.ini |
Formato | Ogni riga di tale file deve iniziare con una delle seguenti
stringhe [keyword]=XXX [attribute]=YYY [property]=ZZZ [routine]=WWW [verb]=JJJ |
Esempio | [keyword]=Object [attribute]=absent [property]=description [routine]=Initialise [verb]=Answer |
Nota1 | Ogni riga vuota o che inizia con il carattere "#" (cancelletto) è considerata come riga di commento e ignorata |
Nota2 | JIF è stato configurato con le keyword contenute nel DM4, quindi non dovrebbe mancare nulla, a livello di syntax highlight |
E' possibile configurare i tasti funzione per digitare caratteri frequentemente usati o particolarmente "ostici" (esempio. ~(tilde),`(apice),{(parentesi graffa), ecc..)
File | functionKeys.ini |
Formato | Ogni riga per ogni tasto funzione, con questo
formato F[XX],[COMANDO] |
Esempio | F1,~ F2,^ F3,{ } F4,[ ] F5,` F6,| F7,@ F8,# F9,& |
Nota |
I tasti F11 e F12 rappresentano un'eccezione. Infatti con questi 2 tasti speciali, è possibile eseguire un programma esterno a JIF. Esempio: F11,hh.exe C:\Jif\doc\dm4.chm F12,explorer Nell'esempio, il tasto F11 lancia il file DM4.chm (formato file HELP
per windows), che contiene l'help in linea relativo al manuale DM4. |
Gestisce l'elenco dei caratteri speciali riconosciuti da JIF per eseguire il "mapping" in ZSCII.
File | mapping.ini |
Formato | [CARATTERE NORMALE],[CARATTERE ZSCII] |
Esempio | é,@'e è,@`e à,@`a ì,@`i ò,@`o ù,@`u |
Nota |
Questo file non va modificato, dato che dovrebbe coprire tutti i caratteri speciali che devono essere trasformati (se il mapping dei caratteri è attivo). Segnalare eventuali mancanze: verranno corrette ed inserite nelle successive versioni di JIF. |
Cliccando su ,
viene visualizzato lo switch manager.
Questo Pannello gestisce un elenco di switch che possono essere scelti per la compilazione.
File | switches.ini |
Formato | [SWITCH],[on,off],[Commento] [SWITCH]= lo switch (esempio: "-a") [on,off]= on/off (on=utilizzato in fase di compilazione, off=lo switch NON viene utilizzato in fase di compilazione) [Commento]=commento sul significato dello switch (esempio: "Tracciamento assembly-language") |
Esempio | -a,off,Tracciamento assembly-language (senza hex dumps; vedi
-t) -v5,on,Compila nel Formato Z5 -v6,off,Compila nel Formato Z6 |
Nota |
E' possibile editare il file (switches.ini) e aggiungere/rimuovere
nuovi switch. |
Con JIF è possibile utilizzare una finestra relativa alla gestisce di simboli.
File | symbols.ini |
Formato | [SIMBOLO] |
Esempio | ~ { } @<<< @>>> ä à á â ã å |
Nota |
La configurazione del file prevede UN simbolo per ogni
riga. |
In JIF è integrato un sistema di codice assistito.
File | helpedcode.ini |
Formato | [KEYWORD],[STRINGA DI COMPLETAMENTO] |
Esempio | if,() {} do,() {} |
Nota |
Se attivo, è possibile avere il completamento di blocchi di codice: se
per esempio digito la keyword "if" seguito da spazio, viene
completata in maniera automatica in "if (){}", in modo da avere già
a disposizione le parentesi (in numero corretto). |
Con il tasto destro del mouse sulla TextArea principale, viene visualizzato
un menu a PopUp. La voce più importante di questo menu è INSERISCI NUOVO:
contiene una serie di menu e sotto-menu da cui scegliere cosa inserire nel
testo.
E' possibile modificare la lista degli oggetti da inserire,
semplicemente aggiungendo del codice all'interno dei file menu.ini:
questi file sono contenuti nelle directory a partire da: JIF/config/menu
Per esempio il file: JIF/config/menu/Class/menu.ini ha questo contenuto:
Generic Class,Class CLASS_NAME §has ATTRIBUTE; Room Class,Class Room§ has light;
Se da menu si sceglie la voce Menu->Inserisci Nuovo->Class->Room Class, nel codice che si sta sviluppando verrà inserita questa porzione di sorgente:
Class Room has light;
Da questo esempio si può dedurre:
WeB: | http://slade.altervista.org/JIF/ |
e-m@il: | mailto:silver.slade@tiscali.it |