Développement XNA pour la XBox et le PC
232
Avec XNA, la division de l’écran en plusieurs parties se fera grâce à des objets de type
Viewport. Il est possible de fixer la taille de ces objets, ainsi que leur point d’origine,
chacun d’entre eux disposera de son propre repère cartésien.
Du mode solo au multijoueur : la gestion des caméras
Au chapitre 3, nous avons vu ce que sont les jeux dits tile-based et nous les avons
employés pour l’application de l’algorithme A* au chapitre 9. Dans ce chapitre, nous
irons encore plus loin avec ce type de jeu et nous allons créer un système de caméra, le
but étant de ne pas afficher toute la carte à l’écran, mais d’obtenir un effet de scrolling (en
français, défilement). Nous avons déjà abordé le scrolling au chapitre 6 : il s’agit de faire
défiler l’écran sur une carte en fonction des déplacements du joueur.
Créer un jeu solo avec effet de scrolling
Commencez par créer un nouveau projet et récupérez, des précédents projets, les fichiers
IKeyboardService.cs, KeyboardService.cs, ServiceHelper.cs, Map.cs, Sprite.cs et Tile.cs.
Tout d’abord, modifiez l’interface IKeyboardService et ajoutez-lui la signature d’une
méthode KeyHasBeenPressed. Le but de cette méthode est de détecter si le joueur a pressé
une touche, puis l’a relâchée. Ainsi, le personnage ne se déplacera d’une case qu’à
chaque fois que le joueur pressera une touche. Modifiez ensuite la classe KeyboardService
de manière à ce qu’elle prenne en compte cette nouvelle méthode.
interface IKeyboardService
{
bool IsKeyDown(Keys key);
bool KeyHasBeenPressed(Keys key);
}
Il n’y a aucune difficulté ici, d’autant plus que vous avez déjà fait la même chose dans un
précédent chapitre pour le bouton gauche de la souris.
class KeyboardService : GameComponent, IKeyboardService
{
KeyboardState lastKBState;
KeyboardState KBState;
public KeyboardService(Game game)
: base(game)
{
ServiceHelper.Add(this);
}
public bool IsKeyDown(Keys key)
{
return KBState.IsKeyDown(key);
}
=Labat FM.book Page 232 Vendredi, 19. juin 2009 4:01 16
232
Avec XNA, la division de l’écran en plusieurs parties se fera grâce à des objets de type
Viewport. Il est possible de fixer la taille de ces objets, ainsi que leur point d’origine,
chacun d’entre eux disposera de son propre repère cartésien.
Du mode solo au multijoueur : la gestion des caméras
Au chapitre 3, nous avons vu ce que sont les jeux dits tile-based et nous les avons
employés pour l’application de l’algorithme A* au chapitre 9. Dans ce chapitre, nous
irons encore plus loin avec ce type de jeu et nous allons créer un système de caméra, le
but étant de ne pas afficher toute la carte à l’écran, mais d’obtenir un effet de scrolling (en
français, défilement). Nous avons déjà abordé le scrolling au chapitre 6 : il s’agit de faire
défiler l’écran sur une carte en fonction des déplacements du joueur.
Créer un jeu solo avec effet de scrolling
Commencez par créer un nouveau projet et récupérez, des précédents projets, les fichiers
IKeyboardService.cs, KeyboardService.cs, ServiceHelper.cs, Map.cs, Sprite.cs et Tile.cs.
Tout d’abord, modifiez l’interface IKeyboardService et ajoutez-lui la signature d’une
méthode KeyHasBeenPressed. Le but de cette méthode est de détecter si le joueur a pressé
une touche, puis l’a relâchée. Ainsi, le personnage ne se déplacera d’une case qu’à
chaque fois que le joueur pressera une touche. Modifiez ensuite la classe KeyboardService
de manière à ce qu’elle prenne en compte cette nouvelle méthode.
interface IKeyboardService
{
bool IsKeyDown(Keys key);
bool KeyHasBeenPressed(Keys key);
}
Il n’y a aucune difficulté ici, d’autant plus que vous avez déjà fait la même chose dans un
précédent chapitre pour le bouton gauche de la souris.
class KeyboardService : GameComponent, IKeyboardService
{
KeyboardState lastKBState;
KeyboardState KBState;
public KeyboardService(Game game)
: base(game)
{
ServiceHelper.Add
}
public bool IsKeyDown(Keys key)
{
return KBState.IsKeyDown(key);
}
=Labat FM.book Page 232 Vendredi, 19. juin 2009 4:01 16
