J’imagine que tu veux spécifier à la main la liste des actions pour chaque objet (et non pas les calculer en fonction des propriétés de l’objet) ?
Dans ce cas, on peut le faire de n’importe quelle façon.
On peut utiliser un tableau pour chaque objet, mais c’est un peu lourd :
[code]A thing has a table name called action list.
La pomme is a thing.
The action list of la pomme is the table of Actions Pomme
Table of Actions Pomme
« prendre »
« poser »
« jeter »
« manger »[/code]
C’est un peu lourd car il faut créer un tableau avec un nom différent pour chaque objet. On pourrait utiliser des listes à la place. (Plus pratique, mais je pense que ça prend plus de mémoire car elles sont dynamiques, contrairement aux tableaux. Mais ça ne pose pas vraiment problème aujourd’hui.)
[code]A thing has a list of texts called action list.
La pomme is a thing.
The action list of la pomme is {« prendre », « poser », « jeter », « manger »}.[/code]
On pourrait peut-être utiliser des relations, mais je ne trouve pas que c’est le plus adapté.
Enfin, si tu veux calculer la liste dynamiquement, une livre de règles est sûrement le plus approprié :
[code][Le livre de règles qui va décider de la liste des actions possibles pour chaque objet.]
Deciding the actions for is a thing based rulebook producing a list of texts.
The deciding the actions for rulebook has a list of texts called possible actions.
[La dernière règle est là pour renvoyer la liste construite par le livre.]
Last deciding the actions for:
rule succeeds with result the possible actions.
[Une petite phrase pour afficher la liste d’actions d’un objet.]
To say possible actions of (T - a thing):
let L be the list of texts produced by the deciding the action for rulebook for T;
say « [L] ».
[Et enfin, des règles pour différents objets.]
Deciding the actions for a portable thing:
add « prendre » to the possible actions;
add « poser » to the possible actions.
Deciding the actions for an edible thing:
add « manger » to the possible actions.
[On peut le faire pour un objet en particulier.]
Deciding the actions for le levier:
add « tirer » to the possible actions.[/code]
Je n’ai pas testé donc il se peut qu’il y ait des erreurs, mais l’idée est là.
Je n’irais pas plus loin parce que je ne sais pas ce qui serait le plus adapté à ce que tu veux faire exactement, alors n’hésite pas à préciser ou à poser des questions !