Je continue à avancer sur mon moteur de tilegame, et je viens de rajouter les déplacements "en douceur". Ca consiste tout simplement à ne pas téléporter un élément d'une case à une autre, mais de le déplacer progressivement.

C'est en implémentant cette fonctionnalité que je me suis rendu compte d'une erreur que je pense avoir fait lors de ma précédente version : le modèle n'a pas à gérer le déplacement, mais uniquement le position actuelle de l'objet, et ses prochaines positions.





En fait, précédemment, le modèle s'occupait de faire passer les éléments d'une étape à une autre au moyen d'un setInterval. Aprés réflexion, je pense que c'est la vue qui doit demander au modèle la prochaine position de l'objet et l'afficher. Et encore plus quand le déplacement est progressif : en effet, un objet en position (1.2, 3.5) ne veut absolument rien dire pour le modèle. Cela à un sens uniquement pour la vue. :)

Du coup, c'est la vue qui stoque une liste des objets en mouvement. Maintenant, le setInterval s'est déplacé sur la vue. Le modèle dit "Tel élément doit aller à tel position". La vue déplace cet élément, et une fois que l'objet est à destination, la vue dit au controleur "Je suis arrivé". Le controleur demande alors au modèle d'informer la vue de la prochaine position de cet objet, etc... 8| Je sais pas si c'est exactement comme ca que dois fonctionner le MVC, alors si des experts de ce modèle de programmation passent dans le coin, manifestez vous ! :=)

J'ai également un peu modifié la gestion du chemin. Auparavant je parcourais un tableau de positions en incrémentant l'index de la position courante. Maintenant, je fais un shift du tableau, et je récupère la position à l'index 0 à chaque fois ... C'est bien suffisant, et en cas de changement de direction, c'est plus logique ... 8)