@lomarcan77 mi fa piacere che qualcuno conosca anche i predecessori dell'attuale tool
...sarà perché magari ci ho scritto un libro intero sull'uso della grafica con inform 6 (il bibbione di glk) E ho aggiunto un sacco di feature mancanti all'implementazione basata su gargoyle (garglk); quindi mi sento di poter dire di essere competente:cool:
Obiettivamente I7 è molto più potente, ma ha una sintassi che è a dir poco orribile. O meglio *apparentemente* è inglese, ma è rigida come un linquaggio di programmazione normale! Esempio tipo di codice I7 (esempio completo qui):
Laboratorio di informatica is a dark room. It is east of the Corridoio. "Un laboratorio di informatica con evidenti segni di colluttazione."
The computer is a device in the Laboratorio. Computer is switched off. The description of the computer is "Un computer vecchio modello. Attualmente è [if computer is switched off]spento.[otherwise]acceso.[end if]". The printed name of the computer is "computer".
The brandello is a thing in the Laboratorio. "Noti un piccolo brandello di stoffa nera." The description is "Ha la medesima consistenza del pile. Con un pizzico di fortuna potrebbe contere capelli o altre tracce del suo possessore."
The printed name of the chiavetta di bronzo is "chiavetta di bronzo".
Monopattini is a plural-named male thing in the Laboratorio di Informatica. The printed name of the monopattini is "dei monopattini".
The tavolo is a supporter in the Laboratorio di Informatica. It is scenery. The chiavetta di bronzo is a female thing on the tavolo. The printed name of the tavolo is "tavolo".
Inves is a number that varies. Inves is 0.
... per intenderci, l'ultima frase è semplicemente la dichiarazione di una variabile che parte a zero!
Inform 6 invece è un linguaggio di programmazione tradizionale:
Object -> MyCompass "compass"
with name "compass" "my",
initial "Hey! Here's my compass.",
description "This is my adventure compass. Without it, I'm totally lost.",
after [;
Take: CompassDirs();
move n_obj to compass; move e_obj to compass;
move s_obj to compass; move w_obj to compass;
move ne_obj to compass; move se_obj to compass;
move sw_obj to compass; move nw_obj to compass;
"Now I know which direction is which.";
Insert, Drop: SetDirStrs();
remove n_obj; remove e_obj; remove s_obj; remove w_obj;
remove ne_obj; remove se_obj; remove sw_obj; remove nw_obj;
print "I'm facing north, or is that east... No, no, it was s--
Blast, I've lost my sense of direction again.";
if ( second ~= nothing ) { print " "; rfalse; }
new_line; rtrue;
],
has scored;
...almeno non ha la presunzione di essere pseudo linguaggio naturale!
Dal punto di vista delle funzionalità sono assolutamente equivalenti: I7 compila in codice I6 che a sua volte diventa Z-code (che viene poi interpretato); c'è qualche comodità di più; esempio tipico comprensibile a ogni makeratore:
Instead of touching the paneling for the first time: say "You run your hands over the paneling with a methodical touch, knowing exactly what you're looking for but never quite feeling anything that gives or twists; then thump lightly, looking for hollow spaces."
Instead of touching the paneling for the second time: say "With increased vigor, you run your fingers along the borders between panels, then smack each panel sharply at the center. No luck yet, but if you keep at it, you're bound to turn up anything that's there to find."
... (chi non ha capito che è un semplice flag tipo 'baule già svuotato' cambi hobby *adesso*). Il flag viene generato e gestito in automatico dalle clausole 'for the first time' e 'for the second time'; in i6 si mette una bella if e si setta il flag, come in uno script...
D'altra parte i6 è più facilmente estensibile visto che la grammatica (del programma, non del gioco) è fissa.
Morale: in italiano funzionano entrambi anche se I6 è più maturo; l'ambiente di sviluppo è solo per I7, I6 di suo è solo un compilatore. I6 è open source, I7 l'ultima volta che ho controllato, no. I6 è per programmatori, I7 invece è per chi vuol perder tempo a cercare la grammatica giusta per quello che vuol fare.
Per un principiante consiglio comunque I7. Se invece di interactive fiction 'convenzionale' vi basta qualcosa tipo librogame c'è LGC (libro game creator) che è ovviamente estremamente terra a terra (zero programmazione!)