2009-12-15 3 views
0

J'implémente un moteur de test AI modulaire utilisant le modèle MVC en python. Jusqu'à présent, tout va bien: les IA, la souris, le clavier sont des contrôleurs, le modèle est un moteur physique, la vue est une instance de pygame qui restitue tout. J'ai un gestionnaire d'événements pour gérer la plupart des communications.Implémentation d'un menu GUI avec MVC sur une application de bureau

Maintenant, je veux implémenter un système de menu (imaginez un menu de jeu où vous pouvez choisir Charger, Enregistrer, Quitter, etc.). Mais je suis bloqué, je n'arrive pas à comprendre comment je devrais l'implémenter. Le problème est que je pense qu'il devrait être partie contrôleur et vue partielle mais je ne suis pas sûr.

Des idées? Merci

Répondre

1

D'abord, quelques points trop souvent oubliés quand on parle de MVC:

  1. Aucun modèle est un dogme. Si la meilleure solution n'est pas MVC, cela signifie probablement que MVC n'était pas adapté au problème.

    • MVC, le style OOD pour les applications de l'interface graphique est très différent de MVC, l'architecture en couches pour les applications web. Dans ce cas, vous avez besoin du premier, tant de documents et d'articles sur le second ne sont peut-être pas de bons conseils.

    • Dans 'GUI-MVC', la triade Model-View-Controller est pour chaque module d'application; il n'y a pas de "couche de modèle", de "couche de vue" ni de "couche de contrôleur".

maintenant, pour votre cas particulier

Vous pouvez voir le système de menu en tant que module supplémentaire, indépendant de votre moteur existant. Ce module peut (si vous le trouvez pratique) avoir sa propre structure MVC. Le modèle peut être la liste (ou l'arborescence) des commandes, les vues sont les menus visibles, le contrôleur peut être un répartiteur qui récupère l'événement menu et exécute les commandes.

Ou, le menu entier peut être juste un contrôle GUI; l'un des nombreux contrôleurs existants. Comme tout contrôle GUI, il a une partie visible. Si vos bibliothèques de base sont assez simples, le code à instancier et à gérer les menus peut être trop simple pour valoir la peine d'une structure interne complexe.

+0

J'aime l'idée d'avoir le système de menu comme module supplémentaire. J'étais trop influencé par la vue de l'application web. Mais même alors, je remarquais déjà la nécessité d'avoir des modules avec sa propre structure modèle-vue-contrôleur. La principale raison pour laquelle j'ai divisé l'application entière en MVC était d'avoir une vue que je pourrais remplacer à l'avenir indépendamment des couches du modèle et du contrôleur. Comme vous l'avez dit dans 1, je ne devrais pas essayer de forcer l'application dans le modèle. Merci pour votre réponse. – Ezequiel

Questions connexes