Cas pratique : programmer un Pong
CHAPITRE 5
89
class Bat : Sprite
{
float speed;
int maxHeight;
Keys keyUp;
Keys keyDown;
public Bat(Vector2 position, int playerNumber, int maxHeight, Keys keyUp, Keys
➥keyDown)
: base(position)
{
this.maxHeight = maxHeight;
this.keyUp = keyUp;
this.keyDown = keyDown;
speed = 0.7f;
}
public void Update(GameTime gameTime)
{
if (ServiceHelper.Get().IsKeyDown(keyDown))
if (Position.Y < (maxHeight - Texture.Height))
Position = new Vector2(Position.X, Position.Y + speed *
➥gameTime.ElapsedGameTime.Milliseconds);
if (ServiceHelper.Get().IsKeyDown(keyUp))
if (Position.Y > 0)
Position = new Vector2(Position.X, Position.Y - speed *
➥gameTime.ElapsedGameTime.Milliseconds);
}
}
Retrouvez ci-dessous le code source de la classe Pong qui utilise deux raquettes. La position
des sprites n’est déterminée qu’après avoir chargé leur texture, ce qui est normal puisque
cette position dépend de la taille de la texture. Notez enfin que le dessin des raquettes se
fait après l’appel à la méthode Draw() de la classe parente, uniquement pour respecter
l’ordre des éléments à l’écran : l’arrière-plan doit être dessiné avec les autres éléments.
public class Pong : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
Bat playerOne;
Bat playerTwo;
public Pong()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
ServiceHelper.Game = this;
Components.Add(new KeyboardService(this));
=Labat FM.book Page 89 Vendredi, 19. juin 2009 4:01 16
Précédent

- 110/366

Suivant