Bonjour,
Je suis en train de faire une espèce de "jeu de la vie" (pas tout à fait le programme d'automate cellulaire mais plutôt un système où évoluent différentes espèces intéragissant entre elles suivant des règles) dans le cadre d'un projet.
Sous lazarus, je modélise par une classe "Jeu" l'environnement contenant une liste de pointeurs sur une autre classe "Animal" pour regrouper tous les animaux de la map. (Le schéma va un peu plus loin que ca, mais l'idée est la même)
A chaque intervalle d'un timer j'appelle une methode Actions sur l'instance de "Jeu" qui à son tour parcourt la liste d'animaux et execute sur chacun la methode actions. Les paramètres passés à l'animal sont nombreux : nombre d'animaux dans le champ de vision, d'autres paramètres encore, ainsi qu'une liste de "Animal" (ceux présents dans le champ de vision de l'animal sur lequel la methode Actions a été appelée).
Le problème c'est que chaque classe est dans une unité différente (normal jusque la), et que les communications entre les classes se font dans les deux sens (je voudrais passer en paramètre à "Animal" des informations définies dans "Jeu" et inversement).
J'ai donc besoin de mettre les Uses dans les deux sens. Je connais l'"astuce" de mettre un des deux uses sous implementation et non interface, mais le problème c'est que j'ai besoin de faire appel à des types de variables etc. or dans l'unité ou je mettrai le Uses sous implementation, les entêtes et tout ce qu'il y a sous interface n'auront toujours pas acces à ces informations.
Les besoins du proramme (tel que j'ai fait ma modélisation) sont tels que je devrais normalement mettre les deux Uses dans interface.
Et la bien sur, l'inévitable Circular unit reference.
Bloqué à partir de la. Des idées ?
Merci d'avance
Partager