IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

"Tracer son chemin"


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut "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

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    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
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut
    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

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    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
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut
    Merci bien !
    A +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Portabilité]Lancer une application sans savoir son chemin
    Par tony_big_guy dans le forum Général Java
    Réponses: 3
    Dernier message: 10/12/2005, 14h06
  2. Trouver son chemin dans un labyrinthe
    Par APoLLoN1234 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 03/11/2005, 22h34
  3. supprimer une table qui a des quotes dans son nom
    Par kleenex dans le forum Access
    Réponses: 2
    Dernier message: 17/10/2005, 16h03
  4. Ouvrir un dossier à partir de son chemin
    Par Mr.Gus dans le forum Access
    Réponses: 2
    Dernier message: 13/06/2005, 13h59
  5. [SERVLET] retrouver son chemin
    Par sebos63 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 12/09/2003, 08h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo