Lu'!
Je n'ai qu'un point majeur à redire sur la conception proposée : pourquoi la map est elle en charge de s'afficher ? Ou, pour être plus précis, et le MVC là dedans ? Quel est le symptôme dans la conception : Map se retrouve avec deux responsabilités : déterminer les directions possibles pour divers éléments et leur caractère bouffable ou non (ce n'est déjà peut être plus de son ressort pour ce dernier point d'ailleurs) et l'affichage d'elle même et des bestioles. Nous avons deux responsabilité : viol du SRP.
Ici, le MVC est parfaitement appliquable . Le tout est d'augmenter encore la séparation entre les éléments. La map, les fantômes et le pacman sont des observables, la vue principale et les représentations graphiques des éléments, des observeurs.
Second point, Partie pourrait encore être découpé et/ou renommé. On a bien envie d'avoir un contrôleur qui se charge de : provoquer les appels nécessaires vers le modèle lorsque le joueur appuie sur un bouton, dire au modèle qu'il peut faire sa tâche idle. Concrètement du côté de cette classe, on aurait :
1 2 3 4 5 6 7 8 9 10 11 12 | void run(){ while(true){ if(event.poll()){ switch(event){ case UP : model.playerMovement(UP); //... } } model.idle(); view.refresh(); } } |
Sachant que ce idle côté modèle serait juste les actions des fantômes, etc. Finalement, le dernier point est que la vue (qui aura été notifiée au fil du tour par les observables) doit mettre son affichage à jour.
Dernier point, mineur cette fois, la majorité des int proposés sont en fait des naturels (unsigned).