Interactions avec le joueur
CHAPITRE 4
69
Dans l’exemple suivant, l’utilisateur a maintenant la possibilité de quitter le jeu en appuyant
sur la touche Échap de son clavier (à laquelle nous accédons via Keys.Escape) :
protected override void Update(GameTime gameTime)
{
KeyboardState KState = Keyboard.GetState();
if (KState.IsKeyDown(Keys.Escape))
this.Exit();
base.Update(gameTime);
}
Vous pouvez également écrire une forme plus contractée, qui n’utilise pas de variable
pour stocker l’état du clavier. Il faut alors faire intervenir l’objet Keyboard comme suit :
if (Keyboard.GetState().IsKeyDown(Keys.Escape))
this.Exit();
Voyons à présent comment déplacer notre sprite. Ajoutons une variable qui contiendra sa
vitesse de déplacement.
float speed = 0.1f;
Le reste est très simple. Selon la touche fléchée sur laquelle il appuie, l’utilisateur
déplace le sprite dans la direction qu’il souhaite, tout en modulant cette translation par le
temps qui s’est écoulé depuis la dernière frame, comme vous l’avez vu au chapitre 3.
protected override void Update(GameTime gameTime)
{
KeyboardState KState = Keyboard.GetState();
if (KState.IsKeyDown(Keys.Left))
sprite.Update(new Vector2(-1 * gameTime.ElapsedGameTime.Milliseconds *
➥speed, 0));
if (KState.IsKeyDown(Keys.Right))
sprite.Update(new Vector2(1 * gameTime.ElapsedGameTime.Milliseconds * speed,
➥0));
if (KState.IsKeyDown(Keys.Up))
sprite.Update(new Vector2(0, -1 * gameTime.ElapsedGameTime.Milliseconds *
➥speed));
if (KState.IsKeyDown(Keys.Down))
sprite.Update(new Vector2(0, 1 * gameTime.ElapsedGameTime.Milliseconds *
➥speed));
base.Update(gameTime);
}
Pour traiter une combinaison de touches, utilisez la méthode GetPressedKeys() qui renvoie
un tableau de Keys. L’exemple suivant affiche la liste des touches sur lesquelles le joueur
a appuyé à la place du titre de la fenêtre.
=Labat FM.book Page 69 Vendredi, 19. juin 2009 4:01 16
Précédent

- 90/366

Suivant