Nous allons créer un jeu de mini-Tennis. Pour cela, nous nous sommes “grave” inspirés de http://www.edu4java.com/en/game/game3.html.
Seulement nous allons développé une solution un peu différente. Si vous choisissez de recopier les codes… tant pis pour vous, mais ne nous ne demandez pas de les corriger !
Suivez bien les instructions pour ne pas perdre l'objectif pédagogique :
Notre objectif n'est pas de vous apprendre à programmer une interface graphique donc les codes correspondants vous sont donnés.
Voici une image d'une “partie” du jeu que nous allons créer.
Question 10mn
Question 10mn grand maximum
Question : Définir la classe Ball
Une Balle se définit par
Définir la classe Racquet
Une Raquette se définit par
Voici le modèle
Vous devrez peut etre ajuster le code donné ci-dessous avec votre code.
Voici comment il fonctionne….
Questions
BallUI
et RacquetUI
?Game
, ajouter en première ligne de la méthode paint : super.paint(g);
Hélas la balle tourne infiniment ! Il faudrait maintenant utiliser la raquette !!
Pour pouvoir jouer, vous devez à présent, déplacer la balle en fonction de la position de la raquette.
Questions
Ball
qui détecte s'il y a collision avec la raquette. Pour cela, vous assimilez la balle à un carré et vous recherchez l'intersection avec le rectangle (java.awt.Rectangle
) qui compose la raquette//Dans la classe Ball public Rectangle getBounds() { return new Rectangle(x, y, diameter, diameter); } private boolean collision(Racquet racquet) { return racquet.getBounds().intersects(getBounds()); }
moveInWithRacquet(getWidth(),getHeight(),racquet)
private void play() { racquet.moveIn(getWidth()); State moveState = ball.moveInWithRacquet(getWidth(),getHeight(),racquet); if (moveState==State.out) gameOver(); ...
Questions :
A présent Questions :
if (x + deltaX < 0) deltaX = 1; if (x + deltaX > width - diameter) deltaX = -1; if (y + deltaY < 0) deltaY = 1; if (y + deltaY > height - diameter) { moveOK = false; deltaY = -1; } move(); return moveOK;
public void moveIn(int width) { if (x + deltaX > 0 && x + deltaX < width - this.width) x = x + deltaX; }
public State moveInWithRacquet(int width, int height, Racquet racquet) { if (x + deltaX < 0) deltaX = speed; if (x + deltaX > width - diameter) deltaX = -speed; if (y + deltaY < 0) deltaY = speed; if (y + deltaY > height - diameter) { return State.out; } if (this.collision(racquet)){ deltaY = -speed; y = racquet.getY() - diameter; return State.collision; } move(); return State.in; }