[Java] rebond d'une balle sur une paroi
Résolu
Blashyrk
Messages postés
19
Date d'inscription
Statut
Membre
Dernière intervention
-
Blashyrk Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
Blashyrk Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un exercice à réaliser en Java et je bloque à une étape du début : faire rebondir la boule sur les parois du billard.
Quand ma boule arrive sur une paroi, elle est comme absorbée, déviée vers l'extérieur de la paroi. Par contre quand elle arrive dans un coin, elle rebondit bien.
les parois sont regroupées dans 2 vecteurs (parVert et parHor), la boule est dessinée dans un rectangle au moyen de fillOval et les parois sont des rectangles dessinés au moyen de fillRectangle.
Le code de la méthode bouge de la classe Balle:
Et le code de la méthode collision de la classe Paroi:
Pour que la boule se déplace à l'écran, j'utilise un thread de la classe ThreadMouvement:
J'ai un exercice à réaliser en Java et je bloque à une étape du début : faire rebondir la boule sur les parois du billard.
Quand ma boule arrive sur une paroi, elle est comme absorbée, déviée vers l'extérieur de la paroi. Par contre quand elle arrive dans un coin, elle rebondit bien.
les parois sont regroupées dans 2 vecteurs (parVert et parHor), la boule est dessinée dans un rectangle au moyen de fillOval et les parois sont des rectangles dessinés au moyen de fillRectangle.
Le code de la méthode bouge de la classe Balle:
public void bouge() { for(Paroi vectVert : billard.getParVert()) //on boucle sur les parois verticales { if(vectVert.collision(this)) deltaX*=-1; } for(Paroi vectHor : billard.getParHor()) //on boucle sur les parois horizontales { if(vectHor.collision(this)) deltaY*=-1; } rect.x+=deltaX; rect.y+=deltaY; }
Et le code de la méthode collision de la classe Paroi:
public boolean collision(Balle b) { return rect.intersects(b.getRect()); }
Pour que la boule se déplace à l'écran, j'utilise un thread de la classe ThreadMouvement:
public void run() { while(true) { try { Thread.sleep(3); billard.getBalle().bouge(); billard.repaint(); } catch (Exception e) {} } }
A voir également:
- [Java] rebond d'une balle sur une paroi
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
5 réponses
Ajoute a ta methode Coliision un
Et vérifie avec le console que ton event est bien appeler au bon momment :)
System.out.println('Je touche');
Et vérifie avec le console que ton event est bien appeler au bon momment :)
Pas bête du tout ça :) .
Alors, quand la balle entre dans le coin supérieur gauche, c'est parfait. Autre part, ça foire complètement : sur les parois horizontales, le message "Je touche" apparait une multitude de fois.
J'ai rajouté un message à afficher quand le programme entre dans les if des for (hum) de la méthode bouge.
Quand une paroi horizontale est touchée, le message du if sur les parois verticales s'affiche !
Et je vois toujours pas pourquoi ça plante :P
Alors, quand la balle entre dans le coin supérieur gauche, c'est parfait. Autre part, ça foire complètement : sur les parois horizontales, le message "Je touche" apparait une multitude de fois.
J'ai rajouté un message à afficher quand le programme entre dans les if des for (hum) de la méthode bouge.
Quand une paroi horizontale est touchée, le message du if sur les parois verticales s'affiche !
Et je vois toujours pas pourquoi ça plante :P
Si si, quand je les déclare dans ma classe Balle, je les initialise à 1 (sinon il n'y aurait pas de mouvement du tout).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question