Bonsoir à tous,

Je bloque actuellement sur un projet.

Tout d'abord commençons par la structure. J'ai réparti mes fichiers dans 5 dossiers :

  1. logic : Contient les classes métiers (actuellement, maze héritant de grid_graph (voir lib)).
  2. UI : Contient la couche graphique (simple affichage ASCII).
  3. lib : Contient actuellement une implémentation de graph (grid_graph) + des fichiers templates pour les algorithmes ne dépendant pas de l'implémentation : Dijkstra, A*, ...
  4. controller : Contient la couche applicative (les controleurs, ...).
  5. data : Contient la couche donnée (encore rien dans ce dossier...).


A la racine du projet, j'ai le main et le makefile.

Le main crée l'objet ui_main_menu et appelle la méthode run() de cet objet qui va boucler sur le menu principale.

Pour chaque option du menu (sauf quitter) il y a un menu correspondant.

Vu que les menus se répétaient, j'ai codé un objet qui crée des menus. ui_menu contient la méthode register_action(nom de l'action, action). Une action est donc un objet menu qui hérite de la classe action.

Le menu principal est constitué de ces choix :

  1. Charger fichier
  2. Générer aléatoirement
  3. Quitter


Mais je n'arrive pas à choisir un "design" pour ces 2 menus.
Ces deux objets appellent un contrôleur, est-ce que ce contrôleur va être le même pour ces deux objets menu (normalement il le faut car ces 2 menus appellent un nouveau menu objet ui_maze en passant en paramètre le contrôleur) ? Je pensais mettre le même et implémenter deux méthodes load_file(path) et generate(). load_file() utiliserait vraisemblablement un objet de la couche data pour récupérer le labyrinthe.

Mais il faudra aussi que ce contrôleur implémente des méthodes pour récupérer le labyrinthe (par exemple get_point(x,y), get/set_<caractéristique d'un point>(x,y) voir "chaine de caractère get_labyrinthe(x,y)" puis encore bien d'autre pour manipuler la position courante, etc.).
Je me demande maintenant qui doit faire la traduction noeud du labyrinthe en ASCII. Le contrôleur ? En tout cas, ça poserait problème si c'était l'UI car elle manipulerait des objets métiers.

Il y a toujours quelque chose qui me gène, c'est le fait de n'avoir que un contrôleur pour toutes ces méthodes...
Je pense qu'il me manque un outil et je n'arrive pas à mettre la main dessus.

N'hésitez pas à me dire ce qui ne va pas, même les détails si vous en avez l'envie.

Merci pour votre aide.