Développement XNA pour la XBox et le PC
200
Certes, l’algorithme A* est rapide, mais il reste encore de nombreuses choses à ajouter,
notamment :
• Sur des grandes cartes, diviser le parcours en check points et calculer seulement le
temps pour aller du point de départ au premier check point, puis du premier check
point au second, etc.
• Gérer les collisions avec d’autres entités différentes d’un mur ou d’un relief, ce principe
étant applicable grâce à la notion de coût des nœuds.
Bien évidemment, toutes ces petites idées induiront d’autres problèmes, notamment de
performances. Le code source que nous venons d’étudier n’est pas parfait : c’est à vous
de développer et d’optimiser sans cesse le vôtre en fonction des besoins.
Cas pratique : implémenter le déplacement d’un personnage
sur une carte
La dernière partie de ce chapitre est consacrée à la réalisation d’une application exemple
plus poussée qui utilise le pathfinding. Le but est de déplacer un personnage (représenté
par un carré) là où l’utilisateur cliquera sur la carte.
Préparation : identifier et traduire les actions du joueur
Tout d’abord, vous allez devoir vous occuper de la souris. Par défaut, elle est masquée
dans une application sous XNA. Cependant, vous pouvez l’afficher simplement grâce à
la propriété IsMouseVisible.
IsMouseVisible = true;
Ensuite, vous devez être en mesure de savoir si l’utilisateur vient de presser le bouton
gauche de la souris et de récupérer les coordonnées du pointeur à ce moment-là.
Commencez par ajouter la classe ServiceHelper que vous avez développée dans un chapitre
précédent. Comme pour le clavier, commencez par créer une interface IMouseService.
Figure 9-7
Test de l’algorithme avec une carte piège
=Labat FM.book Page 200 Vendredi, 19. juin 2009 4:01 16
200
Certes, l’algorithme A* est rapide, mais il reste encore de nombreuses choses à ajouter,
notamment :
• Sur des grandes cartes, diviser le parcours en check points et calculer seulement le
temps pour aller du point de départ au premier check point, puis du premier check
point au second, etc.
• Gérer les collisions avec d’autres entités différentes d’un mur ou d’un relief, ce principe
étant applicable grâce à la notion de coût des nœuds.
Bien évidemment, toutes ces petites idées induiront d’autres problèmes, notamment de
performances. Le code source que nous venons d’étudier n’est pas parfait : c’est à vous
de développer et d’optimiser sans cesse le vôtre en fonction des besoins.
Cas pratique : implémenter le déplacement d’un personnage
sur une carte
La dernière partie de ce chapitre est consacrée à la réalisation d’une application exemple
plus poussée qui utilise le pathfinding. Le but est de déplacer un personnage (représenté
par un carré) là où l’utilisateur cliquera sur la carte.
Préparation : identifier et traduire les actions du joueur
Tout d’abord, vous allez devoir vous occuper de la souris. Par défaut, elle est masquée
dans une application sous XNA. Cependant, vous pouvez l’afficher simplement grâce à
la propriété IsMouseVisible.
IsMouseVisible = true;
Ensuite, vous devez être en mesure de savoir si l’utilisateur vient de presser le bouton
gauche de la souris et de récupérer les coordonnées du pointeur à ce moment-là.
Commencez par ajouter la classe ServiceHelper que vous avez développée dans un chapitre
précédent. Comme pour le clavier, commencez par créer une interface IMouseService.
Figure 9-7
Test de l’algorithme avec une carte piège
=Labat FM.book Page 200 Vendredi, 19. juin 2009 4:01 16
