premieres scenes . Votre appréciation ?

Bonjour

Apres 3 jours de travail (Ben oui j’ai commencé Inform7 que la semaine dernière), je vous livre ici le code pour mes deux premieres scenes.
Certains reconnaitront peut être le jeux MS. The guild of thieves.
PAs facile quand on commence. C’est là que l’on s’apercoit de la multiplicité des situations.

J’attends vos commentaires qui m’aideront à mieux coder.
Je me heurte encore à deux problèmes :
1/ La rivière a été définie comme une scenery dans LE BATEAU ( lieu 1 ). Elle est donc examinable depuis le bateau (room). Par contre elle n’est plus présente depuis la jetée(room) ( I7 refuse que je relocalise la riviere ( scenery) sur la jetée.
2/ Je n’ai pas réussi à déclarer la Jettée (room) comme étant aussi un scenary ( pour pouvoir utiliser examin dessus.)

[code]Include French by Eric Forgeot. Use French Language.

PART 1 - Configurations et initialisations générales

Chapter 1 - Tables d’actions

Instead of waiting:
choose a random row in the Table of Attente;
say « [response entry][paragraph break] »;
stop the action.

Table of Attente
response
« Le temps passe. »
« Vous attendez un peu en méditant sur vos actions passées. »
« Vous passez d’un pied sur l’autre pour occuper votre temps. »
« Remplissez donc votre mission. »

Instead of helping:
choose a random row in the Table of Lesaides;
say « [response entry][paragraph break] »;
stop the action.

Table of lesaides
response
« Des conseils utiles sont disponibles dans le guide de jeu. »
« Lisez à nouveau votre guide de jeu, cela vous aidera. »
« Je ne peux vous aider. »

Chapter 2 - Nouveaux verbes

Understand the commands « tuer » and « attaquer » as something new. Understand « tuer [someone] » as killing.
Killing is an action applying to one thing.

Understand the commands « sauter » as something new. Understand « sauter sur [something] » as sautering.
sautering is an action applying to one thing.

Understand the commands « aide » as something new. Understand « aide » as helping.
helping is an action applying to nothing.

Chapter 3 - Variables

The maximum score is 100.

Every turn :
if score is 200
begin;
say « Vous avez retrouvé tous les trésors. Félicitation. »;
end the game in victory;
end if.

PART 2 - Introduction

Chapter 1 - Introduction

When play begins: say "Vous êtes maintenant un membre confirmé de la célèbre Guilde des Voleurs dont les actes légendaires et les exploits audacieux imprègnent le folklore Kerovnian. Comme test annuel il vous est demandé à nouveaux de ransonner les lieux environnants de tous leurs objets de valeur. [paragraph break] "

PART 3 - Les objets et les lieux

Chapter 1 - Scene 0 Dans le bateau

DANS LE BATEAU is a room. « Flottant sereinement dans un petit bateau, roulant et tanguant avec les courants de la rivière, vous vous sentez prêt à affronter de nouveaux défis. Le maitre voleur, assis face à vous, vous dévisage avec mépris. [unless the cordage is pulled] A l’ouest se trouve une jetée à laquelle votre bateau est amarré par un cordage tendu de trois mètres de long.[otherwise]Votre bateau est maintenant contre la jetée. ».

Chapter 1.1 - Le voleur

Understand « voleur » or " maitre voleur" as the maitre.
The voleur is scenery in DANS LE BATEAU. The maitre is a man. The maitre can be dead. The voleur is a man. The voleur can be dead.
The description of the voleur is « C’est un personnage singulier au visage impassible, ne trahissant aucune expression. ».

Instead of touching or smelling or pushing the voleur , say « [first time] Une brise légère commencer à souffler.[only] Le voleur n’apprécie pas particulièrement vos manières. ».
Instead of attacking the voleur, end the story finally saying « C’est une idée assez stupide d’essayer d’attaquer un maître voleur, mais vous essayez tout de même. [line break]Celui-ci vous plante alors avec habilité un poignard sous les côtes. [paragraph break]Vous êtes mort. »
Instead of killing the voleur, end the story finally saying « C’est une idée assez stupide d’essayer d’attaquer un maître voleur, mais vous essayez tout de même. [line break]Celui-ci vous plante alors avec habilité un poignard sous les côtes. [paragraph break]Vous êtes mort. »
Instead of asking maitre about something: say « Pour le moment, cela n’est pas important.[line break]«Aimez-vous perdre du temps alors qu’il y a du travail à faire?» ».
Before waiting four time:
Say « Le voleur, avec un regard de dégoût et de consternation, vous empoigne fermement et vous jette sur la jetée. »;
Move the player to JETEE;
Stop the action.

Chapter 1.2 - Objet Le bateau/barque

Understand « bateau » as barque.
The barque is a scenery in dans le bateau. The description of the barque is « Une barque à fond plat aux extrémités relevées, juste assez grande pour transporter deux passagers avec leur équipement. ».

Instead of pushing barque, say « Soyez sérieux ! ».
Before taking barque:
say « Ne soyez pas ridicule, vous ne pouvez prendre une barque. »;
stop the action.

Instead of pulling the barque for the first time :
say « La rivière a trop de courant et le bateau est top lourd pour être sorti par la corde. ».
Instead of pulling the barque for more than the first time:
say « Le bateau est trop lourd pour être sorti par la corde. ».

Chapter 1.3 - Objet Cordage/corde

Understand « corde » as cordage.
The cordage is a scenery in dans le bateau. the description of the cordage is « Le cordage assure avec sécurité la barque à la jetée, chaque extrémité étant fixée par un nœud semblant bien compliqué. ».
The cordage can be pulled. The cordage is not pulled. [Ça crée un nouvel adjectif pour la corde.]
The noeud is a scenery in cordage. The description of the noeud is « Un noeud bien compliqué et impossible à défaire. ».

Instead of cutting cordage, say « Vous n’avez rien qui puisse le couper ».

Instead of pulling the cordage once:
now the cordage is pulled;
say « Vous tirez le cordage. La barque glisse doucement jusqu’à la jetée. ».

Instead of pulling the cordage for more than the first time:
say « Le bateau est trop lourd pour être sorti par la corde. ».

Instead of going west from dans le bateau when the cordage is not pulled:
say « S’appuyant sur le bord du bateau, le maitre voleur vous attrape par le bras avant que vous ne tombiez à l’eau. Vous êtes de nouveau dans le bateau. ».

Instead of sautering embarcadere when the cordage is pulled:
Say « Vous sautez sur le jetée. »;
Increase the score by 5;
Move the player to jetee.

Instead of sautering embarcadere when the cordage is not pulled:
Say « S’appuyant sur le bord du bateau, le maitre voleur vous attrape par le bras avant que vous ne tombiez à l’eau. Vous êtes de nouveau dans le bateau. ».

Chapter 1.4 - Objet Riviere

[The riviere is scenery in dans le bateau. The description of the riviere is « La rivière est large et profonde, et dessine ses méandres à travers le paysage. ».]

Chapter 2 - Scene 1 Sur la jetée

Understand « jetee » and « jetée » as embarcadere.
JETEE is a room. « Vous êtes sur un ponton en bois à l’ossature abimée par les intempéries des saisons et l’humidité de la rivière ». Jetee is west from DANS LE BATEAU.
EMBARCADERE is scenery in dans le bateau.

PONTON is scenery in jetee.« Le ponton repose sur une multitude de pieux en bois. Comme la plupart des pontons. ».
PIEUX is scenery in jetee.« Des pieux faits de bois dense et d’une section respectable. »
OSSATURE is scenery in jetee.« Vraiement ! Il est inutile de perdre du temps avec des détails comme l’ossature du ponton! ».

Instead of going east from the jetee :
say « Le bateau s’est éloigné. Impossible de le rejoindre. ».[/code]

Je crois que tu n’as pas bien réussi à mettre ton code entre les balises. Quandtu cliques sur le bouton « Code » au dessus de la fenêtre de texte, il t’ajoute déjà les deux balises, collées l’une à l’autre, et te positionne le curseur au bon endroit. Tu n’as plus qu’à cliquer exactement à cet endroit pour coller ton texte. Là, je crois que tu as cliqué sur « Quote », que tu as collé ton texte après les deux balises et que tu as recliqué sur « Quote ».

Sinon, pour qu’un objet de décor apparaisse dans plusieurs salles à la fois, il faut le déclarer en backdrop (toîle de fond). Par exemple :

La riviere is backdrop in Room1, Room2 and Room3.

Si je ne dis pas de bêtises, tu n’est pas obligé de le mettre aussi en scenery, le backdrop a les mêmes propriétés, si ce n’est qu’il peut être présent dans plein d’endroits à la fois.

Pour la jetée, tu ne pourras pas déclarer ta salle comme un objet. Par contre, tu peux ajouter un scenery ou un backdrop avec un nom légèrement différent de celui de ta salle, et utiliser « Understand » pour déclarer tous les synonymes que tu veux que le joueur puisse utiliser pour le désigner.

Je veux bien jeter un oeil au reste de ton code, mais je ne suis pas ultra rodée en I7 non plus, donc je ne sais pas si je vais pouvoir bien t’aider…

(Edit : J’ai regardé rapidement, il n’y a rien qui me choque vraiment. Par contre, quelques fois, tu fais appel à des tables avant de les avoir créées, ça n’empêche pas la compilation ? Si non, tant mieux ! L’usage de la table pour l’aide me gêne un peu : quand on lit le tableau, on a clairement l’impression que la première ligne doit être lue avant la deuxième, et la deuxième avant la troisième, mais là, si le joueur tape aide, ça choisit toujours une ligne au hasard. Donc un joueur peut potentiellement avoir droit à la troisième ligne en dernier, ce qui n’est pas idéal… Je pense qu’il serait plus approprié d’utiliser les fonctions décrites dans le chapitre 5.7 de la doc, en particulier say « [cycling] » ou say « [stopping] », ou même éventuellement say « [then at random] » ou say « [then purely at random] », je te laisse regarder et choisir ce qui te parait le mieux. Et je crois que tu n’as pas la dernière extension en date pour le français, mais il faudra voir ça avec Natrium (je crois)…)

Je me suis permis d’éditer ton message pour ajouter les balises de code.

1/ Filiaa a raison pour les backdrops, c’est ce qu’il faut utiliser et ils sont considérés comme des scenery.

2/ Filiaa a aussi raison pour la jetée. Un exemple concret :

The bateau is a room. The jetée is west from the bateau. The jetée-décor is a privately-named scenery thing in the bateau. Understand "jetee" as the jetée-décor.
Le privately-named est là pour qu’Inform n’ajoute pas les synonymes automatiquement aux objets (mais il prendra toujours en compte les understand). Comme ça, le joueur ne pourra pas utiliser « jetée-décor », juste « jetée ».

En règle générale, Inform ne prend pas en compte l’ordre du code, donc ça ne pose pas de problème.

Je rejoins Filiaa pour les tableaux, ce n’est pas vraiment utile. Cependant, si tu trouves que c’est plus lisible avec les tableaux, ce n’est grave non plus.

Et effectivement, tu utilises une ancienne version d’Inform. 6G60, j’imagine ? Je conseille personnellement d’utiliser 6L38 et la nouvelle extension, qui a corrigé beaucoup de choses, si tu n’as pas de raison particulière de rester sur 6G. Il faudra peut-être réécrire des morceaux de ton code, mais rien de bien méchant. Tu peux aussi rester sur 6G si tu n’as pas envie de t’embêter, bien sûr.

Et maintenant, attention, toutes mes remarques sur ton code. Tu n’es pas obligé de toutes les prendre en compte car elles sont en partie subjectives, et si ça fonctionne pour toi, alors ça va, mais ça pourra peut-être t’aider à mieux comprendre Inform et à prendre de meilleurs habitudes.

1
Il n’y a pas besoin de redéfinir certaines commandes. Par exemple, ça ne sert à rien de créer une action killing alors que l’action attacking existe déjà (à moins que tu veuilles différencier les deux, mais je ne pense pas).
Pareil pour ton action sauter. Oui, il faut en créer une autre car tu veux que ça s’applique à un objet, mais tu n’as pas besoin d’utiliser « Understand the commands « sauter » as something new », sinon le joueur ne pourra plus sauter sur place (avec l’action jumping standard). Aussi, si tu veux garder sautering, il vaut mieux ajouter la préposition « on », comme ça tu peux écrire

Instead of sautering on something

plutôt que

Instead of sautering something

(Après, c’est pas dramatique non plus.)

2
Tu n’as pas besoin de mettre un saut de paragraphe à la fin de ton intro si tu enlève l’espace avant le point : Inform s’en occupe tout seul quand un texte finit par un point (à moins bien sûr que tu voulais réellement plus d’espace après l’intro).

3
De manière plus générale, il faut que tu fasses attention à où tu mets tes espaces et tes points dans les conditions et les first time. Par exemple :

Instead of touching  or smelling or pushing the voleur , say "[first time] Une brise légère commencer à souffler.[only] Le voleur n'apprécie pas particulièrement vos manières.".

Ici, il y a une espace de trop avant « une brise », qui va s’afficher la première fois. Les autres fois, il y aura une espace de trop avant le voleur. Il faut mettre l’espace dans le first time :

Instead of touching  or smelling or pushing the voleur , say "[first time]Une brise légère commencer à souffler. [only]Le voleur n'apprécie pas particulièrement vos manières.".

4
Dans le code suivant, tu peux enlever mon commentaire, c’était juste une explication sur le code. :wink:

The cordage can be pulled. The cordage is not pulled. [(Tu peux enlever ça) Ça crée un nouvel adjectif pour la corde.]

Voilà, j’espère que ce n’est pas trop, et que ça pourra t’aider !

Ok

Merci pour votre aide. Cela fait plaisir de voir que l’on n’est pas tout seul.
J’ai corrigé toutes les erreurs relevées. Sauf celle de la jetée relative aux synonymes où je n’ai pas encore tout compris. Je vais relire à tète reposée.
J’ai compilé et cela fonctionne sans bug

Pour les tables, cela ne gêne pas la compilation.
je suis resté à cette version d’inform (6G60) car l’extension en français ne fonctionnait pas avec les autres versions
Désolé pour le"quote" mais je ne maîtrise pas. La prochaine fois sera la bonne.

J’ai acheté le bouquin INFORM7 en anglais. Ma bible. Mais lire les codes sources reste encore la meilleure solution.
D’autres livres à suggérer ?

PS : quelqu’un a pratiqué les titres de Magnetic scroll ? Peut être un autre sujet à déplacer ?

C’est parce que 6L a bouleversé pas mal de choses dans le comportement interne d’Inform, et l’extension à du être complètement réécrite. Tu peux aller regarder ici pour en savoir plus sur cette nouvelle extension. Elle permet entre autres d’écrire une grosse partie de sa source en français. Mais tu peux aussi rester sur 6G60 si tu préfères ne pas avoir à faire tous les changements requis par la nouvelle version.

Le manuel de base m’a amplement suffit, donc je ne pourrais pas te recommander grand-chose. Je connais le Inform 7 Handbook de Jim Aikin, mais je n’ai pas aimé (mais d’autres l’aiment plus que le manuel officiel). Si tu aimes voir les codes sources, presque tous les miens sont disponibles ici. Mais ils utilisent 6L38.