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 :
- logic : Contient les classes métiers (actuellement, maze héritant de grid_graph (voir lib)).
- UI : Contient la couche graphique (simple affichage ASCII).
- 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*, ...
- controller : Contient la couche applicative (les controleurs, ...).
- 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 :
- Charger fichier
- Générer aléatoirement
- 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.
Partager