Collisions et physique : créer un simulateur de vaisseau spatial
CHAPITRE 10
209
• La seconde tâche consiste à vérifier que le vaisseau du joueur ne quitte pas l’écran. Si
cela se produit, il a perdu, il faut le replacer au centre de l’écran.
Vous serez en mesure de répondre à ces exigences en utilisant les propriétés de
taille de la texture utilisée par le vaisseau, ainsi que la taille de l’écran (les variables
statiques SCREEN_WIDTH et SCREEN_HEIGHT). Comme d’habitude, n’oubliez pas que, par
défaut, le point d’origine est placé en haut à gauche de la texture.
La méthode Update() complétée
public void Update(GameTime gameTime)
{
if(ServiceHelper.Get().IsKeyDown(Keys.Up))
Position = new Vector2(Position.X, Position.Y - (float)(0.4 *
➥gameTime.ElapsedGameTime.Milliseconds));
if (ServiceHelper.Get().IsKeyDown(Keys.Down))
Position = new Vector2(Position.X, Position.Y + (float)(0.2 *
➥gameTime.ElapsedGameTime.Milliseconds));
if (ServiceHelper.Get().IsKeyDown(Keys.Left))
Position = new Vector2(Position.X - (float)(0.3 *
➥gameTime.ElapsedGameTime.Milliseconds), Position.Y);
if (ServiceHelper.Get().IsKeyDown(Keys.Right))
Position = new Vector2(Position.X + (float)(0.3 *
➥gameTime.ElapsedGameTime.Milliseconds), Position.Y);
if (Position.X < 0)
Position = new Vector2(0, Position.Y);
if (Position.X + Texture.Width > ChapitreDix.SCREEN_WIDTH)
Position = new Vector2(ChapitreDix.SCREEN_WIDTH - Texture.Width,
➥Position.Y);
if (Position.Y < 0)
Position = new Vector2(Position.X, 0);
if (Position.Y + Texture.Height > ChapitreDix.SCREEN_HEIGHT)
Position = new Vector2(Position.X, ChapitreDix.SCREEN_HEIGHT -
➥Texture.Height);
}
À vos claviers
La structure qui a été retenue pour ce jeu se contente d’utiliser des classes dérivées de la classe Sprite.
Cependant, vous pourriez très bien faire dériver la classe Player de la classe DrawableGameComponent,
ou encore utiliser les interfaces IGameComponent, IUpdatable et IDrawable. N’hésitez pas à récrire ce
mini-jeu exemple avec ces solutions, cela constitue un très bon entraînement.
=Labat FM.book Page 209 Vendredi, 19. juin 2009 4:01 16
Précédent

- 230/366

Suivant