De retour de vacances, on va pouvoir enfin entrer dans le développement du jeu.

 

Cela sera peut-être un peu technique. Merci de me dire si vous êtes interessé, si certains points méritent des éclaircissement.

 

Je vais donc aborder aujourd'hui le développement des trajectoires des différents éléments du jeu. En effet, les héros ont des trajectoires, les ennemis ont des trajectoires, les différents projectiles qu'ils peuvent lancer ont aussi des trajectoires. 

Le but d'un développement propre étant(parmis d'autres facteurs) de ne pas répéter de code et de pouvoir le réutiliser facilement. Pour aider dans cette démarche nous avons en tant que développeur à notre disposition des centaines de "design patterns" qui sont des réponses standard aux problèmes les plus courant. Cela à pour avantage de proposer une solution éprouvée et de pouvoir la nommer facilement. Cela permet de pouvoir quand on revient sur son code identifier le concept tout de suite et de pouvoir travail plus efficacement en équipe car la façon de répondre au problème sera connu sans entrer dans les détails de l'implémentation.

 

Pour notre problème de trajectoire nous avons donc un design pattern tout trouvé "Strategy" qui est issu du livre "Design Patterns - Elements of Reusable Object-Oriented Software" écrit par le "Gang of Four". Ce Pattern étant l'un des plus simple, il est donc idéal pour notre présentation.

 

Ce pattern va nous permettre de découpler le comportement, de l'élément auquel il va se rattacher de manière élégante. Il sera de plus possible de changer à l'exécution le comportement(donc la trajectoire dans notre cas)

 

La partie qui va suivre demande des connaissances en programmation orientée objet pour les détails mais je pense que la compréhension du concept peut se faire sans, pour qui veut appréhender le concept général.

 

Pour faire simple nous allons avoir 2 types pour commencer:

- Les classes qui représentent les éléments(héros, ennemis, projectiles...)

- Les classes qui implémentent les comportements(différentes trajectoires)

 

On peut voir sur le diagramme de classe suivant la structure d'un design pattern strategy:

 

 

Dans notre cas :

- "ClasseUtilisantStartegie" sera l'une des classes "Elements"

- "Strategie" sera l'interface requise pour les trajectoires.

- "ConcreteStrategieA et B" seront les différentes classes implementant le comportement trajectoire.

 

Le Classe "ClasseUtilisantStartegie" attendra donc qu'on lui donne l'une des classe concrete ayant l'interface "Trajectoire" pour definir la façon dont elle va se déplacer.

 

Cela donnera à l'execution en pseudo-code quelque chose comme:

 

oHero = new Hero;

oAllerToutDroit = new AllerToutDroit;

oHero.setTrajectoire(oAllerToutDroit);

oHero.updatePosition();

 

Et ensuite le Hero ira tout droit, la méthode "updatePosition" métant à jour dans le temps la position de l'élément.

 

Je peux entrer dans les détails si des personnes sont interressées par ce concept.

 

Je parlerai dans l'article suivant de l'intelligence artificiel des ennemis de mon jeu pour comprendre comment il réagira à son environnement sans donner l'impression de faire toujours la même chose.