-
"Tracer son chemin"
Bonjour à tous
J'ai créer une applet-"simulation de voile" et j'aimerais faire la chose suivante:
J'aimerais créer une trace du bateau, c'est a dire un traitillé qui marque le chemin que le bateau a fait. (Le bateau avance grâce à un thread et le problème est que mon dessin est 'updater' à tout les tours du thread, donc je n'arrive pas à "garder" les point que je dessine à posx et posy, les coordonnées du bateau à chaque tour du thread) !
NB: la très bonne explication du traitillé dans la FAQs ne m'a pas servi...!
Merci
Cordialement
Patrick
-
Il faut pour ça stocker en mémoire les différents mouvement du bateau (Dans une ArrayList par exemple) et dans le paintComponent de ton JPanel les redessiner tous.
Voilà si tu as plus de questions
-
Merci pour ta réponse,
-juste t'arriverais à me donner une explication (ou un lien) pour créer une telle ArrayList d'un mouvement ?!
-et cette méthode affichera la trace en temps réel, une fois dessinée dans paint ? (A chaque mouvement du bateau "une trace" se rajoutera?)
Merci
PAt-trix
-
Basiquement une trace correspondra à une ligne entre deux positions du bateau, donc au final ce que tu devras retenir ce sont les positions successives du bateau et dessiner des lignes entres celles ci.
Grosso modo, une position du bateau est un Point définit par un couple de coordonnées x,y (la classe Point de java fera parfaitement l'affaire). Ensuite en partant du principe que ton bateau se déplace de façon plus ou moins linéaire, chaque changement de direction correspond à un nouveau point de destination. Au moment où la direction change tu stocke le point actuel dans ton ArrayList, ce qui au fur et à mesure décrira le trajet déja effectué par ton bateau.
Puis pour afficher le trajet du bateau il te suffira de passer par la méthode paintComponent de ton JPanel, cette méthode s'exécute automatiquement à chaque fois qu'un repaint() est appelé sur ton panel.
Dans cette méthode il te suffira de faire quelquechose dans ce style
Relier les différents points,qui seeront stockés dans l'ordre d'ajout dans ton arraylist, par la méthode drawLine de tes graphics, puis relies le dernier point de ton ArrayList à la position actuelle de ton bateau.
Ensuite si tu veux faire des animations, (grosso modo appeler la méthode repaint régulèrement pour provoquer l'actualisation du panel) tu peux utiliser la classe javax.swing.Timer qui te permet de générer un évènement à temps régulier.
Et penses à passer par l'event dispatch thread pour ce genre de manipulations
-