Bonjour, je réalise un projet en java sous eclipse du jeu du casse brique.
Je n'arrive pas à gérer les rebonds entre la balle et la raquette de jeu.
Pour l'instant , si la balle entre en contact avec la raquette,celle ci prend un angle droit.
Le jeu est donc répétitif(cela provoque toujours la meme partie!).
J'ai pensé à gérer la raquette en trois parties(gauche milieu et droite) afin de donner un certain angle
à la balle en fonction de la zone touchée. Seulement je ne vois pas du tout comment faire
Pouvez-vous m'aider?Ya-t-il une meilleure solution?
Voici le code de ma classe balle de la méthode move() appelé dans le thread de ma balle :
public void move() {
x += dx;
y += dy;
//contact avec un mur
if (x < 0) {
x = 0;
dx = -dx;
}
if (x + XSIZE >= canvas.getWidth()) {
x = canvas.getWidth() - XSIZE;
dx = -dx;
}
if (y < 0) {
y = 0;
dy = -dy;
}
if (y + YSIZE >= canvas.getHeight()) {
y = canvas.getHeight() - YSIZE;
dy = -dy;
}
Raquette r = ((BalleCanevas)canvas).getRaquette();
if (r.contact(x, y)==1){
//contact entre la balle et la raquette
y=r.getY()-YSIZE;
dy =-dy; // pour l'instant je donne un angle droit
//si la balle entre en contact avec la partie
//gauche de la raquette
if(x2<this.getX()+5)
cas=1;
// si la balle entre en contact avec le milieu
//de la raquette
else if(x2<this.getX()+10)
cas=2;
// si la balle entre en contact avec la partie
//droite de la raquette
else cas=3;
Il faut plutôt calculer l'angle de réflexion si tu ne veux pas es angles droits à chaque rebond. L'angle d'arrivé sur la surface = l'angle de rebond. i=r en optique. Il faut donc savoir l'angle de la surface, l'angle d'arrivée afin de calculer l'angle de rebond.