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

Langage Java Discussion :

ralentir les opération en java


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 35
    Par défaut ralentir les opération en java
    Bonjour,
    j'utilise NetBeans 6.9 et le langage java. J'ai créer un jeu de robot qui se déplace tour par tour, le problème c'est que la vitesse des opération est trop rapide et il n'affiche que le résultat final. J'aimerez ralentir les opérations pour que l'utilisateur voient les déplacement des robots tour à tour.

    J'aimerez savoir s'il existait une méthode capable de faire ceci (par exemple un tour par seconde)

    merci d'avance de vos réponses

    gio89

  2. #2
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Salut,

    Sans le code concerné, difficile de donner une reponse plus précise. Mais tu peux utiliser Thread.sleep pour ralentir ton programme aux endroits qui t'interessent.

    a+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2010
    Messages : 94
    Par défaut
    En effet, sans code c'est difficile.

    la méthode sleep de la classe Thread peut être une solution...
    ou mettre en place un timer...

    On attend ton code!

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 35
    Par défaut
    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
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    import javax.swing.*;
    import javax.swing.border.*;
    import java.awt.*;
     
    public class PlateauJeu extends javax.swing.JFrame {
     private Jeu lejeu;int larg,longu,nbto,nbje,nbdiv;int nbj=1;int nbgagne=0;boolean fin=false;int nbt=0;
     
        public PlateauJeu() {
            initComponents();
           Choix jd=new Choix(this,true);
           jd.setVisible(true);
           larg=jd.largueurgrille;
           longu=jd.longueurgrille;
           System.out.println(larg);System.out.println(longu);
           nbto=jd.nbtour;
           nbdiv=jd.division;
           nbje=jd.nbjeux;
          lejeu=new Jeu(longu,larg,nbto,nbdiv,nbje);
          // 
           creationJeu();
           afficheJeu();
     
           jeu();
     
        }
     
     
        public void creationJeu(){
      // création d'une stratégie en grille de longeur et largeur définit par l'utilisateur
       GridLayout g=new GridLayout(longu,larg);
        Grille.setLayout(g);
       for(int i=1;i<=longu;i++)
         for(int j=1;j<=larg;j++)
         {JPanel pan=new JPanel();  // créaation d'une case (panel)
          Grille.add(pan);     // ajout de la case dans la grille
         }
      }
     
     
      public void afficheJeu(){ 
     
     
       for(int i=0;i<longu;i++)
           for(int j=0;j<larg;j++)
           { // récupére les panneau de la grille un par un et regarde son numéro (0,1 ou 2)
             JPanel pan=(JPanel)Grille.getComponent(i*larg+j);
            // création d'une bordure
             Border lineBdr = BorderFactory.createLineBorder(Color.BLACK);
             if(lejeu.g.grille[i][j]==1)
             {  // coloration de la case en jaune si son numéro est 1
                 pan.setBackground(Color.YELLOW);
                 pan.setBorder(lineBdr);}
     
             if(lejeu.g.grille[i][j]==0)
             {// coloration de la case en rouge si son numéro est 0
                 pan.setBackground(Color.RED);
                 pan.setBorder(lineBdr);}
     
             if(lejeu.g.grille[i][j]==2)
             {// coloration de la case en bleu si son numéro est 2
                 pan.setBackground(Color.BLUE);
                 pan.setBorder(lineBdr);}
     
             if(lejeu.g.grille[i][j]==3)
             {// coloration de la case en bleu si son numéro est 2
                 pan.setBackground(Color.GREEN);
                 pan.setBorder(lineBdr);}
     
           }
       }
     
      public void jeu(){do{fin=false;nbt=0;
          if(nbj>1)
           lejeu=new Jeu(longu,larg,nbto,nbdiv,nbje);
          // création d'un nouveau jeu
     
     
           if(nbj>=1)
           {nbt = 0;                  //remise à zero du nombre de tours
            if(lejeu.fin)
           {   lejeu.g.AffichageGrille();
               nbgagne++;  // incrémente le nombre de parties gagnantes
               fin = true;
               System.out.println("gagner en : "+1+" tours");
           }
            while(nbt<=lejeu.nbTour && !fin)
            {lejeu.Faireuntour();     // fait un tour
            nbt++;                      // incrémente le nombre de tour
           // verification de la fin d'un tour
            if(lejeu.r.fin || lejeu.r2.fin)
            {
                nbgagne++;
                fin = true;
                System.out.println("gagner en : "+nbt+" tours");
             }
            if(!lejeu.r.fin && !lejeu.r2.fin && nbt==lejeu.nbTour)
              System.out.println("perdu en +"+nbt+"tours");
            }
           }
           nbj++;
           }while(nbj<=lejeu.nbJeu); // faire le jeu autaut de fois que l'utilisateur le demande
     
          afficheJeu();
      }
     
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
     
            Grille = new javax.swing.JPanel();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            getContentPane().setLayout(new java.awt.GridLayout(1, 1));
     
            Grille.setLayout(new java.awt.GridLayout(4, 4));
            getContentPane().add(Grille);
     
            pack();
        }// </editor-fold>                        
     
     
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    PlateauJeu pj=new PlateauJeu();
                    pj.setVisible(true);
                    pj.setSize(500, 500);
                }
            });
        }
     
        // Variables declaration - do not modify                     
        private javax.swing.JPanel Grille;
        // End of variables declaration                   
     
    }
    Voila le code du programme principale
    par contre comment on utilise sleep???

  5. #5
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    En supposant que ton algo s'execute dans un thread different de l'EDT, il suffit de faire Thread.sleep(temps_attente);
    => C'est une methode statique, pas besoin d'instance.

    Et s'il s'execute dans l'EDT, créer un nouveau thread pour le sortir.

    a+

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 35
    Par défaut
    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
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    import javax.swing.*;
    import javax.swing.border.*;
    import java.awt.*;
     
    public class PlateauJeu extends javax.swing.JFrame {
     private Jeu lejeu;int larg,longu,nbto,nbje,nbdiv;int nbj=1;int nbgagne=0;boolean fin=false;int nbt=0;
     
        public PlateauJeu() {
            initComponents();
           Choix jd=new Choix(this,true);
           jd.setVisible(true);
           larg=jd.largueurgrille;
           longu=jd.longueurgrille;
           System.out.println(larg);System.out.println(longu);
           nbto=jd.nbtour;
           nbdiv=jd.division;
           nbje=jd.nbjeux;
          lejeu=new Jeu(longu,larg,nbto,nbdiv,nbje);
          // 
           creationJeu();
           afficheJeu();
     
           jeu();
     
        }
     
     
        public void creationJeu(){
      // création d'une stratégie en grille de longeur et largeur définit par l'utilisateur
       GridLayout g=new GridLayout(longu,larg);
        Grille.setLayout(g);
       for(int i=1;i<=longu;i++)
         for(int j=1;j<=larg;j++)
         {JPanel pan=new JPanel();  // créaation d'une case (panel)
          Grille.add(pan);     // ajout de la case dans la grille
         }
      }
     
     
      public void afficheJeu(){ 
     
     
       for(int i=0;i<longu;i++)
           for(int j=0;j<larg;j++)
           { // récupére les panneau de la grille un par un et regarde son numéro (0,1 ou 2)
             JPanel pan=(JPanel)Grille.getComponent(i*larg+j);
            // création d'une bordure
             Border lineBdr = BorderFactory.createLineBorder(Color.BLACK);
             if(lejeu.g.grille[i][j]==1)
             {  // coloration de la case en jaune si son numéro est 1
                 pan.setBackground(Color.YELLOW);
                 pan.setBorder(lineBdr);}
     
             if(lejeu.g.grille[i][j]==0)
             {// coloration de la case en rouge si son numéro est 0
                 pan.setBackground(Color.RED);
                 pan.setBorder(lineBdr);}
     
             if(lejeu.g.grille[i][j]==2)
             {// coloration de la case en bleu si son numéro est 2
                 pan.setBackground(Color.BLUE);
                 pan.setBorder(lineBdr);}
     
             if(lejeu.g.grille[i][j]==3)
             {// coloration de la case en bleu si son numéro est 2
                 pan.setBackground(Color.GREEN);
                 pan.setBorder(lineBdr);}
     
           }
       }
     
      public void jeu(){do{fin=false;nbt=0;
          if(nbj>1)
           lejeu=new Jeu(longu,larg,nbto,nbdiv,nbje);
          // création d'un nouveau jeu
     
     
           if(nbj>=1)
           {nbt = 0;                  //remise à zero du nombre de tours
            if(lejeu.fin)
           {   lejeu.g.AffichageGrille();
               nbgagne++;  // incrémente le nombre de parties gagnantes
               fin = true;
               System.out.println("gagner en : "+1+" tours");
           }
            while(nbt<=lejeu.nbTour && !fin)
            {lejeu.Faireuntour();     // fait un tour
     
            nbt++;                      // incrémente le nombre de tour
           // verification de la fin d'un tour
            if(lejeu.r.fin || lejeu.r2.fin)
            {
                nbgagne++;
                fin = true;
                System.out.println("gagner en : "+nbt+" tours");
             }
            if(!lejeu.r.fin && !lejeu.r2.fin && nbt==lejeu.nbTour)
              System.out.println("perdu en +"+nbt+"tours");
     
            try{
            Thread.sleep(1000);
            }
             catch(InterruptedException e){}
            }
           }
           nbj++;
           }while(nbj<=lejeu.nbJeu); // faire le jeu autaut de fois que l'utilisateur le demande
     
        //  afficheJeu();
      }
     
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
     
            Grille = new javax.swing.JPanel();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            getContentPane().setLayout(new java.awt.GridLayout(1, 1));
     
            Grille.setLayout(new java.awt.GridLayout(4, 4));
            getContentPane().add(Grille);
     
            pack();
        }// </editor-fold>                        
     
     
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    PlateauJeu pj=new PlateauJeu();
                    pj.setVisible(true);
                    pj.setSize(500, 500);
                }
            });
        }
     
        // Variables declaration - do not modify                     
        private javax.swing.JPanel Grille;
        // End of variables declaration                   
     
    }
    J'ai fait cela et sa marche merci par contre je n'arrive pas a afficher la grille a chaque tour.
    Il m'affiche la grille une fois la fonction jeu() fini, or j'aimerez l'afficher a chaque tour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while(nbt<=lejeu.nbTour && !fin)
            {lejeu.Faireuntour();     // fait un tour
            afficheJeu();
            nbt++;
    je pensait le mettre là mais sa ne change rien, il me l'affiche que une fois l'exécution fini. Comment on peut y remedier?

Discussions similaires

  1. Les futurs tutoriels Java sur DVP ?
    Par Ricky81 dans le forum Débats
    Réponses: 65
    Dernier message: 06/01/2012, 02h33
  2. Surveiller les opérations effectuées sur un dossier en java
    Par Asi2009 dans le forum Général Java
    Réponses: 3
    Dernier message: 08/08/2011, 13h36
  3. [Avis] Les meilleurs programmes Java ?
    Par christopheJ dans le forum ImageJ
    Réponses: 69
    Dernier message: 07/10/2008, 01h12
  4. [Stratégie] Ant pour les tests en Java ?
    Par franckR dans le forum Tests et Performance
    Réponses: 5
    Dernier message: 08/03/2004, 09h38

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