Petites questions de grand débutant

La syntaxe d’Inform 7 est parfois frustrante, souvent logique, par contre cela peut prendre un peu de temps et de relecture du manuel pour s’y adapter.

À l’utilisation de « before », on peut ensuite soit continuer l’action (réponse par défaut + action associée), soit l’arrêter (stop the action).

Pour ton exemple :

Before removing bambous from the bocal:
say "Vous retirez en douceur le décor et constatez que le socle grisâtre en plastique était plus à son avantage masqué par les graviers. Le poisson s'agite quand des graviers manquent de lui retomber dessus, et vous lance un regard de poisson aussi furieux qu'un regard de poisson puisse l'être.";
Continue the action.

pour éviter le « ok », tu peux faire à la place de continue the action :

silently try taking the bambous
ou encore
move the bambous to player

Pour les conditions, je pense que ce n’est pas possible de tester que quelque chose se déroule (taking / takes), il faut intercepter cela avec « before » ou « instead ». Mais if et when peut fonctionner pour tester un état : « if the player has bambou » par exemple, cet état étant testé avec un instead ou before. Concrêtement, je crois que tu ne peux pas avoir un « if » au début d’un bloc, il faut qu’il soit pris dans un contexte. Étudie du code existant, par exemple ce jeu, même si on peut coder mieux :

anamnese.online.fr//site2/if/inform7/Sarvegne/
(attention, j’ai fait pas mal d’erreurs de débutant là dedans, en particulier pour les « if visited »)

ou bien les jeux des spécialistes d’inform :
inform-fiction.org/I7/Worked Examples.html

j’utilise beaucoup les exemples d’Emily Short pour trouver des astuces ou des manières de faire.

Pour les lieux déjà visité, c’est facile, tu as donné l’exemple toi-même :

The description of Chambre1 is "[if not visited]J'entrais dans ce superbe endroit. [end if]Il y avait là blablabla.". 

J’utilise souvent cela pour ajouter une précision la première fois que l’on entre, ensuite il y a une description générale.

Mais on peut faire également :

The description of Chambre1 is "[if not visited]J'entrais dans ce superbe endroit pour la première fois. [otherwise] J'étais déjà venu ici. [end if]".
Pour les accords, je pense que c’est un bug qui existe déjà dans la version inform 6. Je vais voir si je peux le corriger, soit en faisant l’accord, soit en mettant une réponse plus neutre. Tu peux en attendant modifier le comportement par défaut de cette réponse.
(genre instead of eating something etc…)

Hello!

Cà marche aussi sous Ubuntu !

Cool. Pour ma première IF, je créer une sorte de Cluedo (d’ailleur çà s’appel Cluedo). Le fameux Docteur Lenoir A été assassiné… devinez la suite :laughing:

On pourrais ouvrir une section débutant :blush:

A +,

Benoit

Tu viens de me tirer une grosse épine du pied tout en me donnant des idées pour la suite.

En fait, je me suis rendu compte dans la foulée que prendre et enlever ne sont pas la même chose pour Inform (logique, mais pas évident…) Mais taper enlever implique automatiquement l’action de prendre. Du coup, j’ai réglé mon histoire de texte simultané à une action comme ceci :

After taking bambous: say "Vous retirez en douceur le décor et constatez que le socle grisâtre en plastique était plus à son avantage masqué par les graviers. Le poisson s'agite quand des graviers manquent de lui retomber dessus, et vous lance un regard de poisson aussi furieux qu'un regard de poisson puisse l[']être."
Forcément, il ne disait que Ok parce que je tapais prendre et non enlever les bambous pendant le jeu. Il faut croire également que les deux points après la première déclaration sont très importants, depuis que je les ai ajoutés à la place de la virgule, il accepte taking (donc plus besoin de removing).

Par contre, j’ai remarqué qu’il me transformait la dernière apostrophe en guillemets, il a fallu que je la mette entre crochets pour qu’il l’affiche normalement.

Quant au coup du [otherwise], c’est tellement simple que j’aurais dû y penser…

Merci pour ton aide, je vais de ce pas aller disséquer tes exemples. Je pense que j’ai là de quoi m’occuper pour un moment avant de revenir t’embêter.

bon, très bien si cela s’arrange pour vous deux :slight_smile:

N’hésitez pas à poser des questions, il n’y a pas de question bête de toute façon, et je suis ravi d’avoir 2 nouveaux adeptes d’Inform 7.

Un dernier truc, très très utile, c’est la commande « actions », une fois tapée, cela permet d’afficher le déroulement en arrière plan d’une commande donnée. Cela permet notamment d’obtenir la traduction anglaise des expressions tapées en français, et cela permet de savoir quel verbe réutiliser pour les tests ou conditions, et quelle est la bonne syntaxe. Par exemple j’avais du mal à trouver quel verbe était utilisé pour « mettre », comme dans « mettre le livre dans l’armoire », en fait c’est « inserting », et non pas « put » par exemple.

Pour le guillemet, là c’est vraiment énervant, les concepteurs d’inform ont dû trouver que le tilde ~ de inform 6 pour coder les guillements ce n’était pas assez élégant, et donc ils ont remplacé cela par un apostrophe, du coup pour le français cela pourrit tout :frowning: Je me suis plaint plusieurs fois de cela sur la liste de discussion, mais je ne pense pas qu’ils fassent quelque chose à ce niveau. J’espère que les Italiens vont se mettre à Inform 7, cela pourra nourrir les contestations ! (cela n’affecte pas l’espagnol). Il est effectivement possible d’utiliser des crochets, mais je trouve cela un peu lourd. Pour les derniers jeux que j’ai réalisé, j’ai utilisé ce script sous linux, et je recompile une dernière fois à la main :

cat auto.inf | sed -e "s/ s~/ s\'/g" | sed -e "s/ n~/ n\'/g" | sed -e "s/ l~/ l\'/g" | sed -e "s/ c~/ c\'/g" | sed -e "s/ d~/ d\'/g" | sed -e "s/ j~/ j\'/g" | sed -e "s/ m~/ m\'/g"  | sed -e "s/ u~/ u\'/g"  > auto2.inf

/usr/local/share/inform7/Compilers/inform-6.31-biplatform -kE2SDwv8x +/usr/local/share/inform7/Library/Natural ./auto2.inf -o ./nomdufichier.z8

Mais je vais peut-être passer aux crochets, faudrait que je trouve un moyen pour les ajouter automatiquement.

Quand aux 2 points, je pense qu’on les utilise dans ce contexte lorsqu’il y a plusieurs phrases ensuite (séparées par des points virgules), tandis que l’on peut mettre une virgule s’il n’y a qu’une seule phrase.

Dernière petite auto-promotion, j’avais réalisé ce petit jeu pour un speedif (en quelques heures), il contient quelques idées sans doute réutilisables, et on peut voir quelques limitations liées aux verbes :
anamnese.online.fr//site2/if/inf … beeKatana/

Enfin, j’ai réorganisé un peu les fichiers inform 6 et inform 7, ainsi que les instructions, cela est plus clair j’espère :

informfr.tuxfamily.org/

Une nouvelle version d’Inform 7 est sortie, la 5G67, avec pour nouveauté principalement des corrections de bugs, mais également le support de manipulations de texte avancées comme les expressions régulières :

inform-fiction.org/I7Downloa … eNotes.txt

La version Gnome Linux est maintenant officiellement reconnue sur le site des développeurs. Je viens de mettre à jour sur le site informfr.tuxfamily.org/ le petit patch pour le français, en ajoutant un fichier batch pour windows pour faciliter l’installation et la mise à jour de l’extension française et des fichiers nécessaires, ainsi qu’un script pour linux et mac os x (pas encore testé sous mac os x)

Merci pour le patch, j’ai fait la mise à jour sous Windows et tout semble fonctionner. Par contre, il a des fichiers en double dans le dossier Eric Forgeot, qui font 0 kb et qui ont le même nom que les originaux mais en minuscules. Ca ne gêne en rien, mais il y a un message d’erreur à la décompression de l’archive. Je sais pas trop comment marche un SVN, possible que ça vienne de chez moi.

Je crois que je vais attendre pour réessayer la version Linux, j’ai vu que toutes les options n’étaient pas encore supportées (pas de skein notamment). J’avoue que je n’ai pas tout compris aux nouveautés (sachant que je suis loin d’avoir tout compris au reste…), mais il y a en tout cas pas mal de nouveaux exemples, ça donne de la matière à potasser.

Sur ce, je retourne à Writing with Inform, il me reste 20 chapitres à décortiquer :unamused:

au niveau des fichiers en double, en fait c’est parce qu’il faut utiliser des liens symboliques sous linux pour prendre les extensions (il faut qu’il puisse trouver l’extension en minuscule). Par contre comme ce lien est normalement recréé lors de l’installation sous linux, je devrais le retirer de l’archive svn. En fait le svn (subversion) permet de travailler à plusieurs sur le même code. Tout est regroupé dans un dépôt centralisé. Le téléchargement que tu peux faire depuis le site est juste un moyen d’avoir accès au code (facilité par l’interface web).

Le skein, je ne l’utilise pas du tout, mais sinon il devrait arriver dans cette nouvelle version linux justement… (enfin on verra, mais c’est prévu, s’il a eu le temps)
Je vais pouvoir embrayer avec une nouvelle version de mon live-cd, j’ai remis un peu tout d’aplomb récemment…

le skein n’est pas encore dans la version actuelle de gnome-inform. J’attends toujours la beta version en test…

sinon je parle ici d’une mise à jour pour les bibl. d’inform 7 :
ifiction.free.fr/forumBB/viewtop … =4359#4359

N’hésitez pas à m’indiquer les verbes qui vous posent problème lors de la création de vos jeux, et j’essayerai de les modifier dans les extensions. Avec ce système, on ne devrait plus être coincé comme avant pour améliorer des verbes déjà existants !

Existe- il un outil permettant de vérifier les directions dans un jeu ? Par exemple tester si on peut revenir au point de départ, s’il n’existe pas de culs-de sac … (sous windows ça m’arrangerait :wink:)

inform-fiction.org/extensions/debugging.html

regarde checkout.h cela fait cela pour Inform 6.

Ok merci.

Tant que j’y pense, pour les bibliothèques, la commande « rejouer » n’existe pas. A voir si vous souhaitez l’ajouter avec « replay »…

oui effectivement. Cela a été ajouté à la version 7, mais pas encore synchronisé pour la version 6. Normalement on devrait pouvoir n’avoir qu’une seule bibliothèque pour les 2, je vais voir comment faire pour que cela se fasse bien à ce niveau.

Toujours en ce qui concerne les bibliothèques françaises, la commande « recording » n’est pas traduite…

La commande « transcript » également, mais bon je ne vois pas trop comment traduire cela…

ok, c’est modifié. Pour transcript j’ai mis transcription et transcrire. Mais je viens de me rendre compte que transcription contient trop de lettres, aussi seul transcrire et log fonctionneront. Mais pour l’arrêt, j’ai laissé on et off, je ne vois pas trop comment le traduire. Ce n’est pas non plus une commande que l’on utilise tout au long du jeu.

Par contre je ne l’ai fait que dans la version I7, qui d’ailleurs à terme devrait pouvoir remplacer la version I6. Mais pour le moment si on l’utiliser il risque de manquer quelques raccourcis (genre l pour regarder).

Si un objet animé possède l’attribut pluralname et que lors du jeu on tente de donner quelque chose à cet objet, le système ne fait pas la liaison :, exemple

     donner le pot aux gens

     Les gens n'ont pas l'air intéressé.

J’avais déjà vu ça pour lavoir et je viens de le revoir dans un jeu de la comp…

Et pourquoi ne pas ajouter le verbe « remonter » comme synonyme de « monter » ?

pourrais-tu poster une partie du code qui ne va pas ? Là je viens de tester avec le « kit debutant inform6 » et cela me semble correct. As-tu bien le verbe « talk » dans life et non pas ailleurs ?

En ce qui concerne ma source, en fait j’avais corrigé :

Maintenant j’ai ça et ça marche :

[code]object poissons « poissons »
with name « poissons » « carpes »,
description [;
print « Il s’agit de carpes-koi.^ »;],
initial « Vous aperçevez des poissons dans l’eau. »,
found_in DansLavoir FaceLavoir,

life [;
	Give:  print "Vous répandez la nourriture pour poissons à la surface de l'eau.^";remove nourriture; return;
],

before [;
	Eat : print "Gourmand.^";return;
	Take : print "Laissez-les en paix !^";return;
],

has male pluralname animate edible;[/code]

En fait j’avais relevé le problème dans un des jeux du concours…

ah oui, je voulais dire « give », pas talk (j’avais testé avec talk dans l’exemple plus haut). Pour le jeu avec ce problème, c’était quel jeu ?
Pour « remonter », je l’ajoute en tant que synonyme de monter.

C’est dans « Divine bonace » avec les marins qui jouent aux dés. J’avais essayé de leur donner du raisin je crois.

J’ai un problème avec la commande secouer : quand je l’ajoute dans mon objet, genre

before [ Wave : print "Vous secouez le sapin";return; ],

sachant que mon sapin contient en attribut « scenery »

à l’éxécution il me renvoie

secouer le sapin
(Vous prenez d’abord le sapin)
Vous ne pouvez pas prendre cela.

Il y a moyen de contourner la précommande « take » ?