Insérer une image dans Inform

Bonjour

Est-il possible dans I7, de faire apparaître une image pour chaque lieu visité.

Dans cet esprit :

Merci
Stéphane

Oui, c’est tout à fait possible, c’est d’ailleurs l’objet du chapitre 23 de la documentation. Par contre, il faudra impérativement exporter ton projet au format Glulx, les .z8 ne peuvent pas contenir d’images.

Ce n’est pas très compliqué : déjà, il faut créer un dossier « Figures » qui doit se trouver au même endroit que ton projet.inform et projet.materials. Ensuite, il faut placer toutes tes images au format .jpeg ou .png dans le dossier nouvellement créé.
Puis, il faut déclarer tes images dans ta source I7 :

Figure Lieu1 is the file "prairie.png". Figure of Chateau is the file "chateau.jpeg".
Tu peux choisir le nom de ton choix, mais ça doit commencer par Figure.
Enfin, tu peux demander à I7 d’afficher tes images avec la phrase

display Figure of Chateau;

ça s’utilise un peu comme on utilise un « say » pour afficher du texte, l’image apparaîtra alors centrée horizontalement, dans le « flot » du texte (ce qui a l’air d’être le cas pour l’image que tu as donné en exemple).

C’est possible de faire des trucs plus élaborés avec des extensions, et sans doute des trucs encore mieux avec Vorple par exemple, mais je laisserai des gens plus expérimentés t’en parler. En attendant qu’ils passent par ici, j’espère que ma contribution n’aura pas été complètement inutile.

Merci pour ta reponse tres complete. Pour ma part je m etais arrete aux simples cover.

Je vais tester cela de suite.

Stephane

Je complèterais la réponse de filiaa en mentionnant deux choses qu’on peut faire en utilisant les bibliothèques Vorple par rapport à juste Glulx :

  • insérer des gif (par exemple pour une image d’une cascade…)
  • ancrer l’image dans l’écran, plutôt qu’elle soit emportée par le flot de texte ; par exemple c’est ce qu’on a fait dans Panoptique, tape « x écran 1 » pour voir des images.

À noter que c’est aussi possible avec Inform de base d’afficher une image fixe dans une zone séparée et indépendante, qui ne sera pas emportée par le texte. Le plus facile est d’utiliser l’extension Simple Graphical Window s’il ne faut qu’une seule fenêtre séparée (elle requiert plein d’autres extensions, qu’il faut télécharger au même endroit). Si tu as des besoins plus compliquées, alors il faut coder des trucs en plus (je peux t’aider si nécessaire).

Aussi, si tu veux centrer une image dans du texte, il faut utiliser l’extension Glulx Image Centering, qui est incluse avec Inform. Il me semble qu’elle posait problème avec 6L38, mais je ne sais plus exactement. Si c’est le cas, ça doit être facilement corrigeable.

Bonjour je remonte ce sujet car je n’arrive pas à afficher une image par exemple SUITE à une description d’un lieu. Je ne suis qu’au début de l’aventure mais j’aurai bien voulu afficher l’image après la description hors pour l’instant je n’y suis pas parvenu.

Mon code concernant cette image en question:

Figure of Vacation is the file "Jeep.png". display Figure of Vacation;

Lors de la compilation Inform 7 me fait une erreur

[code]Problem. In the sentence ‹ display Figure of Vacation › , I can’t find a verb that I know how to deal with.

See the manual: 2.1 > 2.1. Creating the world[/code]

Je me pose la question, est ce que les extensions Française que j’utilise ont un impacte sur le langage de base d’Inform7 car la commande Say me pose des problème de compilation aussi et dire aussi. J’utilise deux extensions pour le Français (celles citées dans le tutoriel de ce même site) dont une expérimental donc.

Merci de votre réponse

Du code que tu donnes, c’est parce que tu ne peux pas mettre d’instructions toute seules, sans indiquer quand la lancer. Inform voit « display Figure of Vacation » et se dit que ça ne veut rien dire là où il a rencontré cette ligne. Il faut mettre l’instruction dans une phrase (le mot anglais « phrase », pas celui français, cf. chap. 11 de la doc) ou dans une règle.

Par exemple, si tu veux afficher l’image au début de la partie :

When play begins: dire "Bonne vacances[_]!"; display Figure of Vacation;

Parce qu’Inform va lancer cette règle au début de la partie. C’est pareil pour say, ou dire, ou toute autre instruction, il faut mettre dans une règle.

En général, les phrases déclaratives (X est une chose dans Y, X est au nord de Y, etc.) qui décrivent l’état initial du monde peuvent être écrites directement dans la source. Les instructions qui « donnent un ordre » (dire « blabla », maintenant X est Y, display the figure of X) doivent être mises dans des règles ou des phrases, qui seront exécutées à un moment donné.

Je soupçonne que c’est le problème ci-dessus. Normalement les extensions française n’entrent pas en conflit avec le langage de base en anglais d’Inform. (Tu peux très bien écrire des « dire » et des « say » dans le même fichier sans problème.) Si jamais il y a véritablement un conflit, fais-moi signe et j’essaierai de corriger.

Merci j’y suis finalement parvenu en mettant une règle, voici ce que j’ai mis:

[code]
Figure of draw is the file « Dessin.png ».

Instead of examining dessin:
dire « J’ai un peu de mal à comprendre ce qu’elle a voulue dessiner… »;
display Figure of draw;[/code]

Donc c’est bien le fait de placer une règle avant qui posait soucis.

Oui, c’est très bien comme ça. :slight_smile: Mais si chaque objet possède une image qui s’affiche quand on l’examine, il y a de meilleures façons qu’une règle instead pour chaque objet. (Mais sinon si c’est une unique image, pas de problème.)

Pour l’instant j’ai déjà quelques objets qui s’affiche de la sorte via Instead, mais tous les objets n’ont pas une image associée (ça ferait beaucoups d’images si c’était le cas et superflus) Mais quel est la façon à laquelle vous pensiez?

Assigner une propriété à chaque objet qui stocke son illustration.

[code][Une image bidon et vide pour signifier qu’un objet n’a pas d’illustration. Si on ne veut pas ajouter une image en plus au projet, on peut utiliser une image existante, pour laquelle on sait qu’elle ne sera jamais utilisée pour un objet.]
Figure of nothing is the file « nothing.png ».

A thing has a figure name called illustration.
The illustration of a thing is usually the figure of nothing .

Carry out examining a thing:
if the illustration of the noun is not figure of nothing:
display the illustration of the noun;

Figure of draw is the file « Dessin.png ».
Le dessin est une chose.
La description est « J’ai un peu de mal à comprendre ce qu’elle a voulue dessiner… »
L’ illustration est figure of draw.

[Si on veut que l’image soit affichée avant la description, il y a quelques petits trucs à modifier.][/code]

Mais si la plupart des objets n’ont pas d’illustration, alors utiliser des instead ne devrait pas poser problème.

Ha oui bien trouvé d’associer une image qui représente rien à un objet censé être sans image.
Pour mettre l’image avant la description j’y suis arrivé avec les Instead mais je vois ceci dans votre code…

Carry out examining a thing: if the illustration of the noun is not figure of nothing: display the illustration of the noun;

C’est la fonction qui se lance à chaque observation et qui affiche une image associée si j’ai bien compris. Je ne l’avais jamais croisée auparavant. J’arrive à comprendre votre code en le lisant mais j’aurai été incapable le l’écrire de moi même cette fonction. C’est un peut ce que je dis dans l’autre topic le fait que j’ai du mal avec ce côté verbal d’Inform 7. Ça vient avec le temps à travailler sur ce logiciel je suppose.

C’est pas tant le côté verbal qui importe ici. Comme dans n’importe quel langage de programmation, il faut connaître l’API, la structure, les fonctions disponibles. Tu aurais été incapable de l’écrire tout simplement parce que tu n’es pas encore au courant que cette règle existe ! Mais comme tu dis, ça viens avec l’expérience, en lisant la doc ou en regardant la source d’autres jeux.

Grosso modo, les règles before/after/instead sont là pour créer des exceptions dans le comportement des actions. (Par exemple, ouvrir un coffre va par défaut juste faire en sorte qu’il devienne ouvert, mais si un coffre est piégé et fait mourir le joueur quand on l’ouvre, c’est une exception et on peut utiliser une instead).

Mais il existe trois autre types de règles : check, carry out et report. Elles permettent de spécifier le comportement normal d’une action. Dans mon exemple, on considère qu’afficher une image fait partie du comportement normale d’examiner (et pas une exception), alors on utilise une carry out. C’est expliqué en détail dans le chapitre « Advanced Actions » de la doc, et introduit rapidement dans un tuto du site.

Pour mettre l’image avant la description, il faut donner un nomb à la règle et dire à Inform de la placer avant celle qui affiche la description (par défaut elle est après parce qu’elle est mise à la fin des règles carry out).

[code][Entre parenthèses, on donne un nom à la règle.]
Carry out examining a thing (this is the display illustration when examining rule):
if the illustration of the noun is not figure of nothing:
display the illustration of the noun;

[Et on dit qu’elle doit être avant la règle qui affiche la description.]
The display illustration when examining rule is listed before the standard examining rule in the carry out examining rulebook.[/code]

Pour connaître le nom et l’ordre des règles fournies par Inform, tu peux taper « rules » en jeu, puis examiner quelque chose, ce qui va lister les règles qui se lancent; ou aller dans l’onglet « index », sous-onglet « actions ». Ce genre de formulation est expliqué en détails dans le chapitre « Rules » de la doc, mais c’est un sujet relativement avancé, alors c’est normal que tu ne sois pas encore familier avec ces notions.