Partage
  • Partager sur Facebook
  • Partager sur Twitter

pile animée

Sujet résolu
    26 mars 2009 à 12:43:21

    bonjour,
    je prépare un projet,c'est une interface graphique pédagogique,en d'autre terme c'est un cour animé de Structure de donnée,jusque là,je suis arrivé à faire visualiser ma fênetre avec les boutons et aussi à faire des applications grâce aux tuto proposé par votre adorable site;CEPANDANT j'arrive à une période critique,j'ai besoin de faire des exemple animé de ma pile par exemple (empiler,dépiler..)j'ai lu le cour sur les Thread je pense que c'est la solution mais comment procéder pour ma pile ou mon tableau..
    merci de bien vouloir m'aider
    • Partager sur Facebook
    • Partager sur Twitter
      26 mars 2009 à 12:59:08

      Bonjour,

      Et bien pour réaliser une animation il faut dessiner toutes les images qu'elle va devoir comporter, y'a pas de racourci.
      Pour réaliser cela, par exemple pour la Pile, vous pouvez dessiner la base de la pile et puis dessiner un nouvel objet à empiler tout en haut, puis au fur et à mesure déplacer ses coordonnées jusqu'à arriver sur la base de la pile.
      Bien sûr si on ne contrôle pas la rapidité d'exécution, l'oeil n'a pas le temps de percevoir ces changements.
      Aussi une solution relativement simple est de faire des micro pauses durant le déplacement.

      Je vous conseille de lire l'exemple du tuto proposé sur ce site pour comprendre le mécanisme.
      Si je ne suis pas très clair n'hésitez pas à poser des questions.
      • Partager sur Facebook
      • Partager sur Twitter
        26 mars 2009 à 13:11:57

        merci pour votre aide;
        c'est quoi des micro pause?
        pour le tuto qui existe sur ce site il travail avec un cercle animé,par contre pour la pile je crois que je dois manipuler deux forme o min..
        sinon j 'ai une autre question,en quoi un swingworker peut être différent d'un thread..et qui peut m'aider le plus
        merci encore une fois
        • Partager sur Facebook
        • Partager sur Twitter
          26 mars 2009 à 13:23:38

          La classe SwingWorker a été conçue pour fabriquer des workers. En gros les Workers s'occupent de gérer des tâches lourdes, on les utilise pour éviter de saturer l'Event Dispatch Thread, qui s'occupe déjà de gérer les évènements et de l'affichage des composants en Swing.

          Ici la classe Thread suffit amplement, voire même la classe Timer.

          Des micro-pauses se font par exemple avec la méthode sleep de Thread. Le thread s'arrête de travailler un moment, puis reprend. Si la pause ne dure pas longtemps, l'œil ne la perçoit pas et voit une animation fluide.

          Tout dépend de l'animation à réaliser ensuite. Moi je représente les piles avec des rectangles qui s'empilent, pour les files et les listes chaînées on peut garder les rectangles aussi.
          Pour la trajectoire du déplacement, je ferais quelque chose de très simple personnellement. Pour les piles par exemple, j'ai suggéré un bloc rectangulaire qui tombe pour empiler, et qui se fait tirer vers le haut pour dépiler.

          Pourquoi il y aurait deux objets à déplacer ? Si c'est le cas il suffit de leur attribuer une méthode déplacement à chacun et le tour est joué. Les deux méthodes peuvent être placés dans le même thread c'est pas lourd en calculs ^^

          Donc pour faire simple : utiliser un Thread qui s'occupera de calculer les différentes positions de l'objet ou des objets à mouvoir.

          • Partager sur Facebook
          • Partager sur Twitter
            27 mars 2009 à 12:28:41

            bonjour,
            par la suite ,j'aurais besoin de donner la main à l'utilisateur c'est lui (pour les liste chainée) qui va creer un chainon lui affecter une valeur et l'ajouter dans ma liste ou le supprimer ,les instructions de bases,et chaque action doit être commenter(tu dois allouer de l'espace avant...)
            c'est mon premier projet, je suis tout a fé perdu...j'ai compris ce qui est demandé mais comment le réaliser en code, j'ai vraiment besoin de vous
            merci
            • Partager sur Facebook
            • Partager sur Twitter
              27 mars 2009 à 20:32:09

              Hum ça fait beaucoup tout ça. Aurais-tu un dessin de ce que tu voudrais à l'arrivée ? Ca aide pas mal !
              Pour l'affichage des commentaires, un petit texte dans un JLabel par exemple.
              Sinon tu parles de valeurs dans les listes chaînées mais elles peuvent contenir des objets à la base ?
              C'est compliqué de tout expliquer en détails. Essaie de lire le tuto Java de ce site pour te familiariser avec les différents composants de Swing pour voir celui qui correspondrait le mieux à ton idée.

              En ce qui concerne le contrôle à l'utilisateur, pareil regarde dans le tuto en jouant avec MouseMotionListener pour suivre les déplacements de la souris sur le composant.

              Pour les chaînons j'aurais opté pour un objet maison : une classe Chainon par exemple qui sache se dessiner.

              Prototype rapide :

              class Chainon {
                private int posX = -1;
                private int posY = -1;
              
                public Chainon(int x, int y) {
                  posX = x;
                  posY = y;
                }
              
                public void afficher(Graphics g, int x, int y) {
                  g.drawRect(x, y, 70, 50);
                }
              }
              


              Avec des getters et des setters ça serait pas mal aussi.
              A toi de bien poser ce que tu veux. C'est plus facile de coder en ayant un aperçu du résultat sous les yeux.
              • Partager sur Facebook
              • Partager sur Twitter
                27 mars 2009 à 21:09:56

                merci
                j'essayerais de terminer le cour de java present sur ce site...et je verrais après ou est ce que j'arrive..merci encore une fois
                • Partager sur Facebook
                • Partager sur Twitter

                pile animée

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown