Cas pratique : programmer un Pong
CHAPITRE 5
91
public Texture2D Texture
{
get { return texture; }
}
La balle
La classe Ball dérive également de la classe Sprite. Cette fois encore, implémentez les
champs présentés dans le diagramme du début de ce chapitre.
class Ball : Sprite
{
float speed;
Vector2 angle;
int maxHeight;
int maxWidth;
public Ball(Vector2 position, int maxWidth, int maxHeight)
: base(position)
{
this.maxHeight = maxHeight;
this.maxWidth = maxWidth;
speed = 0.2f;
angle = new Vector2(1, 1);
}
}
Écrivons maintenant la méthode Update(). Celle-ci prendra en paramètre les raquettes des
deux joueurs, ainsi qu’une référence vers un booléen qui détermine si le jeu est en pause
ou non.
En premier lieu, calculez la nouvelle position de la balle en fonction de la vitesse, du
temps et de la direction.
Position = new Vector2(Position.X + speed * angle.X *
➥gameTime.ElapsedGameTime.Milliseconds, Position.Y + speed * angle.Y *
➥gameTime.ElapsedGameTime.Milliseconds);
Récupérer les raquettes des joueurs vous sera utile pour construire des objets Rectangle.
Ces objets disposent d’une méthode Intersects() vous permettant de détecter les collisions
entre la balle et les raquettes. Un objet Rectangle se construit tout simplement à partir de
deux coordonnées x et y, une largeur et une hauteur.
Rectangle ballRect = new Rectangle((int)Position.X, (int)Position.Y, Texture.Width,
➥Texture.Height);
Rectangle playerOneRect = new Rectangle((int)playerOne.Position.X,
➥(int)playerOne.Position.Y, playerOne.Texture.Width, playerOne.Texture.Height);
Rectangle playerTwoRect = new Rectangle((int)playerTwo.Position.X,
➥(int)playerTwo.Position.Y, playerOne.Texture.Width, playerOne.Texture.Height);
=Labat FM.book Page 91 Vendredi, 19. juin 2009 4:01 16
Précédent

- 112/366

Suivant