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

avec Java Discussion :

Première application Java


Sujet :

avec Java

  1. #21
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 84
    Points : 48
    Points
    48
    Par défaut
    Bonsoir (ou bonjour)
    Je n'ai pas eu le temps de temps de bosser sur mon projet, amis maintenant que je suis en vacances, je compte avancer.

  2. #22
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 84
    Points : 48
    Points
    48
    Par défaut
    Bonsoir (ou bonjour)
    Je n'ai pas eu le temps de temps de bosser sur mon projet, amis maintenant que je suis en vacances, je compte avancer.
    J'ai créé 2 types d'individus: les elfes et les trolls. J'utilise des cercles bleus et jaunes pour les représenter (avec paintComponent). Là je me heurte à un problème. J'arrive à créer et faire bouger un seul cercle dans ma jframe. Mais je veux par exemple créer 30 elfes et 30 trolls et les faire se déplacer dans la frame. Je ne sais pas comment m'y prendre.
    Voilà ce que j'ai fait:
    classe Individus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    public class Individus extends JPanel implements IMentale, IPhysique, ActionListener
    {
        int patience;
        int agressivite;
        int negociation;
        int capacite;
     
        int posX;
        int posY;
     
         public Individus()
        {
     
        }    
     
     
        @Override
        public void paintComponent(Graphics g)
        {
               g.setColor(Color.white);
               g.fillRect(0, 0, 700, 600);
        }
     
        public int getPosX()
        {
            return posX;
        }
     
        public int getPosY()
        {
            return posY;
        }
     
        public void setPosX(int posX)
        {
            this.posX = posX;
        }
     
        public void setPosY(int posY)
        {
            this.posY = posY;
        } 
     
    }
    classe Elfe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    public class Elfe extends Individus
    {
        public int vol;
     
       // private Utilitaire u = new Utilitaire();
     
        public Elfe()
        {
     
        }
     
        public Elfe(int x, int y)
        {
            this.posX = x;
            this.posY = y;
        }
     
        @Override
        public void paintComponent(Graphics g)
        {
            super.paintComponent(g);
            g.setColor(Color.BLUE);
            g.fillOval(posX, posY,20,20);        
        }
     
        public void setVol(int vol)
        {
            this.vol = vol;
        }
     
        public int getVoler()
        {
            return this.vol;
        }
     
    }
    Classe Troll:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    public class Troll extends Individus
    {
     
        Color couleur;
     
        public Troll()
        {
     
        } 
     
        public Troll(int x, int y)
        {
            this.posX = x;
            this.posY = y;
        } 
     
        @Override
        public void paintComponent(Graphics g)
        {
            super.paintComponent(g);
     
            g.setColor(Color.YELLOW);
            g.fillOval(posX, posY,20,20);  
        }
     
        public void setCouleur(Color couleur)
        {
            this.couleur = couleur;    
        }
     
        public Color getCouleur()
        {
            return this.couleur;
        }
     
    }
    Une dernière classe Univers où je crée mes individus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    public class Univers 
    {    
        JFrame fenetre = new JFrame("Informations sur les individus");
        JFrame monde = new JFrame("Monde");   
        private int totalPopulation;
        Individus i;
        public Elfe e;
        public Troll t;
       // Utilitaire u = new Utilitaire;
     
        ArrayList<Elfe> elfes = new ArrayList<Elfe>();
        ArrayList<Troll> trolls = new ArrayList<Troll>();
     
        public Univers()
        {
     
        }
     
         public void create()
        {       
            fenetre.setSize(300, 400);
    //        fenetre.setLocationRelativeTo(null);
            fenetre.setBackground(Color.WHITE);
           // fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            monde.setSize(700, 600);
            monde.setPreferredSize(new Dimension(700, 635));
      //      monde.setBackground(Color.GREEN);
            monde.setLocationRelativeTo(null);
            monde.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
             //création d'un seul elfe (qui marche)
            // e = new Elfe();
            // monde.add(e);
     
            //Création de 30 elfes et 30 trolls avec stockage dans des ArrayList
           //Ne marche pas. Ecrase  chaque et seule le dernier individus est affiché sans mouvement
            for(int i=0; i<30; i++)
            {
                e = new Elfe(u.randomChiffre(1, 500), u.randomChiffre(1, 600));
                monde.add(e);
                t = new Troll(u.randomChiffre(1, 500), u.randomChiffre(1, 600));
                monde.add(t);
               //Ajout aux arrayList
                elfes.add(e);
                trolls.add(t);
            }
     
         //   fenetre.setVisible(true);
            monde.pack();
            monde.setVisible(true);
     
            //appel de la méthode de déplacement
       //le programme ne se lance pas si je mets cette méthode dans la boucle for
            go(t);
        }
     
       //méthode de déplacement que j'aimerai
       private void go(Individus i)
       {
     
           for(;;)
            {
                    int x = i.getPosX(), y = i.getPosY();
                    x++;
                    y++;
                    i.setPosX(x);
                    i.setPosY(y);
                    i.repaint();  
                  //  monde.revalidate();
                    try 
                    {
                        Thread.sleep(30);
                    } 
                    catch (InterruptedException e) 
                    {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                    }
            }
     
     
       }
    }
    J'ai suivi un tutoriel Java pour faire l'animation d'une forme géométrique.

    J'aimerai aussi pouvoir récupérer la position de chaque élément à tout moment, ...

    Dans mon programme principal j'appelle la méthode create() de Univers.
    Je travaille sous netbeans.

    Voilà, j'espère que vous aurez une solution pour que mes cercles jaunes et bleus qui se déplacent sur la même surface.

    Merci pour toutes vos réponses précédentes et vos encouragements.

    Bonnes fêtes!!

  3. #23
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 659
    Points
    2 659
    Par défaut
    Le meilleure solution pour moi est soit d'assigner un Timer à chacun des objets qui bougent, soit d'avoir un timer global.

    Le but est que ton timer tous les delta secondes, en fonction de l'état de tes objets calcule leur nouvelles positions. Il ne te reste plus qu'ensuite à mettre à jour l'affichage.

  4. #24
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 84
    Points : 48
    Points
    48
    Par défaut
    Merci pour le tuyau du timer pour gérer le déplacement des objets.
    Cependant, dans mon code, je n'arrive pas à afficher plusieurs objets simultanément dans ma jframe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
      public void create()
        {       
            fenetre.setSize(300, 400);
            fenetre.setBackground(Color.WHITE);
            monde.setSize(700, 635);
            monde.setPreferredSize(new Dimension(700, 635));
            monde.setLocationRelativeTo(null);
            monde.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            // ajout de plusieurs objets dans la frame
            for(int i=0; i<30; i++)
            {
                e = new Elfe(u.randomChiffre(1, 500), u.randomChiffre(1, 600));
                monde.add(e);
                t = new Troll(u.randomChiffre(1, 500), u.randomChiffre(1, 600));
                monde.add(t);
               //Ajout aux arrayList
                elfes.add(e);
                trolls.add(t);
            }
     
            monde.pack();
            monde.setVisible(true);
        }

  5. #25
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 659
    Points
    2 659
    Par défaut
    Peut-être que lorsque tu affiches un objet tu effaces tout le reste de ton panel?
    Et qu'apres donc tu ne redessines que lui, ce qui fait que tu n'as toujours qu'un objet.

  6. #26
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 84
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par deathness Voir le message
    Peut-être que lorsque tu affiches un objet tu effaces tout le reste de ton panel?
    Et qu'apres donc tu ne redessines que lui, ce qui fait que tu n'as toujours qu'un objet.
    C'est exactement ça. j'ai donc modifié mon code, et j'ai mis un seul paintCompoment dans ma classe principale.

    Il ne me reste plus qu'à résoudre le problème de déplacement.

    Merci pour vos réponses.

Discussions similaires

  1. Développer une première application Java Web
    Par Invité dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 04/10/2011, 15h52
  2. "Publier/Héberger" ma première application Flex/Java
    Par arnaud.tlse dans le forum Flex
    Réponses: 2
    Dernier message: 17/06/2009, 10h07
  3. Réponses: 6
    Dernier message: 25/05/2007, 18h10
  4. Réponses: 2
    Dernier message: 26/05/2003, 19h42
  5. Serveur d'applications Java
    Par foxrol dans le forum Java EE
    Réponses: 3
    Dernier message: 17/05/2003, 00h49

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