Citation :
Ami du jour, bonjour.
Ami du soir, bonsoir.
Voila, je me décide à poser cette question à laquelle je
n'arrive pas à trouver de réponse qui me convienne, alors
je voudrais avoir l'avis de plusieurs personnes.
Ca m'a pris la tête sur le Bomberman et maintenant ca
recommence avec le Mario. Le problème à la base c'est que
lorsqu'on travaille avec des objets, on peut dire que tel
objet fait ca à tel objet. Sans aucun objet, c'est quelque
chose d'impersonnel qui effectue les traitements.
J'en arrive au fait. Dans le Mario, il y a différents
éléments dans une arène : des bonhommes, des tortues, des
blocs, etc, etc. Il existe des interactions entre ces
élements. Par exemple, si une tortue est vulnérable et
qu'un bonhomme la touche, elle meurt. On peut déjà se
demander :
1- est ce que c'est le bonhomme qui se rend compte que
la tortue est vulnérable, qu'il la touche et qu'il la
tue ?
2- est ce que c'est la tortue qui se rend compte que le
bonhomme la touche et qui se dit ah tiens il faudrait
que je meurs ?
3- est ce chacun des elements pourrait faire à part
des tests pour determiner chacun ce que eux-memes
doivent faire pour réagir à l'interaction ?
Les solutions 1 et 2 obligent :
- à considérer qu'il n'y a qu'un des elements qui
décide des conséquences de l'interaction
- à ce que l'élement qui gère l'interaction sache
beaucoup de choses sur l'autre élement : si c'est
le bonhomme qui gère l'interaction, il faudra, avant
de dire à la tortue "tu es morte", qu'il vérifie
qu'elle est bien vulnérable, et d'autres tests. Bref,
tout ca dépend de la façon dont fonctionne la tortue,
et ce n'est pas au bonhomme de savoir des choses sur
le fonctionnement de la tortue (comme par exemple,
quelles conditions il faut pour qu'elle puisse crever
si on lui saute dessus).
Et de plus il n'y a pas vraiment de logique là dedans.
C'est la tortue qui gère elle meme les collisions avec
les bonhommes ? Ben euh oui bien sur, c'est évident.
La solution 3 demande qu'on duplique les tests pour
les deux élements, et qu'en fait on sache bien comment
fonctionne l'autre élément.
Alors comme aucune des solutions 1,2,3 ne me convenait,
j'ai essayé de trouver mieux. J'ai pensé qu'on pourrait
ramener ce coté "impersonnel" qui permettrait de gérer
les interactions en dehors des deux éléments : ce serait
l'arène qui s'en occuperait. Elle testerait elle-meme
les interactions et dicterait aux éléments concernés de
se comporter comme ci ou comme ca. Ainsi, les classes
des éléments définissent tout ce que l'élément peut faire
(par exemple le bonhomme peut sauter, rapetisser : tout
ca, ce sont des commandes du bonhomme controllé). Et
la classe de l'arène s'occupe de tout ce qui est
interaction, utilisant les commandes disponibles chez
les élements concernés.
Ca poserait peut etre juste un petit probleme. Les
élements tombent avec la gravité. Ils doivent donc
effectuer des tests de collisions en avancant pixel par
pixel et donc avec la solution où l'arène gère ca, il
faudrait envoyer à chaque mise à jour d'un élément
l'ensemble des zones où il y a collision. Je ne sais pas
si c'est vraiment génant. Ca pourrait etre une collision
map à passer au constructeur juste une fois, mise à jour
par l'arène quand nécessaire. Mais je n'ai pas essayé
cette solution et j'oublie peut etre (comprendre : sans
doute) des gros inconvénients.
Ce que je voudrais c'est savoir :
- ce que vous pensez des solutions proposées
- ce que vous proposeriez vous meme comme solutions
Merci de faire du "constructive criticism" comme on le
voit souvent écrit sur flipcode
fury
fury94@f...
http://www.bomberman.fr.fm/
|