jeu de la vie en java, nouveau probleme avec une methode

jeu de la vie en java, nouveau probleme avec une methode - Java - Programmation

Marsh Posté le 05-03-2003 à 13:23:12    

Je planche actuellement sur un jeu de la vie tres basique en java.
J'ai fini mon interface graphique qui appelle Grille.java ci dessous, en fait au moment où je clique sur un Jbutton de la grille, celui ci se colore en bleu. Mais j'aimerais que le tableau Tab[][] prenne pour valeur 1 qd le jbutton associé est cliqué.
J'ai conscience que mon explication n'est pas tres claire mais si quelq'un pouvait me filer un coup de main ca me depannerais bien.
 
Merci d'avance :)
 
 
 
 
 
public class Grille extends JPanel
{
 public Grille()
 {
  super();
 
        // declaration du tableau de 52x52
        int Tab[][] = new int[52][52];
        JButton buttonTab[][] = new JButton [52] [52];
 
        // Taille de la grille
        this.setSize(480,480);    
        this.setLayout(new GridLayout(50,50));
 
 
        //on remplit le tableau avec des 0 (case vide)    
        for (int i=0; i<52 ; i++)
        {
            for (int j=0; j<52 ;j++)
            {
                Tab[i][j]=0;
            }
        }
 
        //Ajout des boutons
        for (int i=1; i<51 ; i++)
        {
            for (int j=1; j<51 ;j++)
            {
                buttonTab[i][j] = new JButton(/*new ImageIcon("toto.gif" )*/);
                buttonTab[i][j].addActionListener(
                    new ActionListener()
                    {
                        public void actionPerformed(ActionEvent e)
                        {
                            ((JButton) e.getSource()).setBackground(Color.blue);
                         System.out.println("click!" );
                         
                       }
                    }
                );
                this.add( buttonTab[i][j] );
    }//fin for j
        }// fin for i
         
 }
 
}


Message édité par specialguest le 17-03-2003 à 11:18:14
Reply

Marsh Posté le 05-03-2003 à 13:23:12   

Reply

Marsh Posté le 05-03-2003 à 14:32:47    

tu parcours ta liste de boutons en comparant les références, et tu mets la valeur à 1 dans le tableau
 

Code :
  1. for (int i=0 ; i<buttonTab.length ; i++){
  2.    for (int j=0 ; j<buttonTab[i].length ; j++){
  3.       if (bouton == buttonTab[i][j]){
  4.          Tab[i][j] = 1;
  5.       }
  6.    }
  7. }


 
y'a plus propre, mais cette méthode est facile à mettre en oeuvre dans ton code...

Reply

Marsh Posté le 05-03-2003 à 14:37:51    

ok merci , je vais tester ca :)

Reply

Marsh Posté le 05-03-2003 à 14:40:08    

plus proprement tu peux créer un objet qui chaine les events sur ton JButton.  
 
En gros tu crée un objet avec comme attributs
 
- un JButton
- une coordonnées X
- une coordonnées Y
 
une méthode pour ajouter un listener sur ton composant, ce dernier s'enregistrant sur le JButton.
 
Qd on clique sur le boutton, ton composant intercepte l'event et cree un ActionEvent avec sa propre référence.
 
Dans ton code tu récupères ce composant spécial et tu as donc X et Y à disposition.
 
Tu pourrais étendre JButton of course mais c'est pas propre :o


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 05-03-2003 à 14:51:22    

:'(
Faut y aller doucement avec moi , je suis super novice en java :)
 
Je pensais faire une class test.java à part qui analyse les jbuttons pour savoir si ils ont été cliqués ou pas et qui rempli de ce fait le tableau avec les 1.
Ensuite il execute l'algo standard du jeu de la vie , puis retourne les valeurs à la grille en indiquant un changement de couleur s'il y a lieu.
 
Pour l'instant je ne sais pas encore comment faire passer le tableau d'une classe à l'autre alors ca me bloque un peu.
 
A votre avis le remplissage du tableau avec des 1 faut mieux le faire a part dans test.java ou dans grille.java?
 
En tout cas merci pour votre aide ca me permet d'avancer un peu plus :)


Message édité par specialguest le 05-03-2003 à 14:53:29
Reply

Marsh Posté le 05-03-2003 à 15:13:21    

vu la complexité énorme (j'avais pas vu aussi dur depuis HelloWorld ;)) tu devrais tout mettre dans la même class...

Reply

Marsh Posté le 05-03-2003 à 16:21:29    

Predicator a écrit :

vu la complexité énorme (j'avais pas vu aussi dur depuis HelloWorld ;)) tu devrais tout mettre dans la même class...


 
de quoi tu parles là?  :heink:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 05-03-2003 à 16:22:49    

DarkLord a écrit :


 
de quoi tu parles là?  :heink:  


 
il demande un avis, je lui donne le mien...
 

Citation :

A votre avis le remplissage du tableau avec des 1 faut mieux le faire a part dans test.java ou dans grille.java?


 
vus la complexité de la structure (deux tableaux), il n'a pas besoin de créer deux classes séparées. une simple applet ou application, et les données dedans, ça suffit...
 
à la rigueur, un modèle document-vue très basique, mais ça n'a pas grand intérêt dans ce cas...


Message édité par Predicator le 05-03-2003 à 16:23:58
Reply

Marsh Posté le 06-03-2003 à 13:07:06    

sinon tu peux faire ca :

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

 
public class Grille extends JPanel implements ActionListener
{
int Tab[][];
JButton buttonTab[][];
 
public Grille()
{
 super();
 
       // declaration du tableau de 52x52
       Tab = new int[52][52];
       buttonTab = new JButton [52] [52];
 
       // Taille de la grille
       this.setSize(480,480);    
       this.setLayout(new GridLayout(50,50));
 
 
       //on remplit le tableau avec des 0 (case vide)    
       for (int i=0; i<52 ; i++)
       {
           for (int j=0; j<52 ;j++)
           {
               Tab[i][j]=0;
           }
       }
 
       //Ajout des boutons
       for (int i=1; i<51 ; i++)
       {
           for (int j=1; j<51 ;j++)
           {
               buttonTab[i][j] = new JButton(/*new ImageIcon("toto.gif" )*/);
               buttonTab[i][j].addActionListener(this);            this.add( buttonTab[i][j] );
   }//fin for j
       }// fin for i
       
}
 
public void actionPerformed(ActionEvent e) {
//attention code pas tres joli
for(int i=0;i<52;i++){
   for(int j=0;j<52;j++){
      if (e.getSource()==buttonTab[i][j]){
          Tab[i][j]=1-Tab[i][j];
      }
   }
}
}

 
}

Reply

Marsh Posté le 06-03-2003 à 13:09:14    

souk a écrit :

sinon tu peux faire ca :


 
pas mieux, mais j'avais la flemme de l'écrire :jap:

Reply

Marsh Posté le 06-03-2003 à 13:09:14   

Reply

Marsh Posté le 11-03-2003 à 22:33:31    

oups , je me suis absenté un peu , j'ai du lacher mon projet pour d'autres travaux :D
Je m'y remet demain.
 
En tout cas merci pour votre aide

Reply

Marsh Posté le 12-03-2003 à 14:25:08    

J'ai fais les modifications mais il me fait 2 erreurs à la compilation : il ne trouve pas le buttonTab et le Tab :(

Reply

Marsh Posté le 12-03-2003 à 14:42:29    

specialguest a écrit :

J'ai fais les modifications mais il me fait 2 erreurs à la compilation : il ne trouve pas le buttonTab et le Tab :(


Ha bah c'est balot !


---------------
get amaroK plugin
Reply

Marsh Posté le 12-03-2003 à 14:51:43    

oui c'est balot :D
Là jai declaré les tableaux en dehors du public Grille
public  int Tab[][];
public  JButton buttonTab[][];
 
Le listener fonctionne pour afficher un texte ou autre mais si il fait appel aux tableaux ca ne fonctionne plus :'(
 
EDIT: mainteant ca compile mais ca ne fonctionne pas bien :(


Message édité par specialguest le 13-03-2003 à 09:21:13
Reply

Marsh Posté le 13-03-2003 à 14:48:35    

problème resolu :D
Merci a tous

Reply

Marsh Posté le 13-03-2003 à 15:23:32    

specialguest a écrit :

problème resolu :D
Merci a tous  


de rien :sarcastic:


---------------
get amaroK plugin
Reply

Marsh Posté le 13-03-2003 à 15:41:36    


 
Tout le monde n'est pas un pro en java comme toi...
 

Reply

Marsh Posté le 17-03-2003 à 11:21:14    

Je me retrouve maintenant avec une classe MainFrame qui contient l'interface graphique et une classe Grille qui contient la grille et une methode "tester".
 
J'aimerais pouvoir appeller la methode "tester" de Grille à partir de la classe MainFrame mais je ne sais pas trop comment m'y prendre.

Reply

Marsh Posté le 17-03-2003 à 12:01:23    

specialguest a écrit :


 
Tout le monde n'est pas un pro en java comme toi...
 


en fait on de rien etait un peu ironique, car tu dis que tu as resolu ton pb, mais finalement on sait pas comment ... ou alors j'ai pas tout suivi ...
 
pour ta derniere question :
1. Ton objet Mainframe doit avoir un attribut du genre

Code :
  1. private Grille grille;


2. donc pour appeler ta methode tester(), hop :

Code :
  1. grille.tester();


 
Tu ferai bien de jeter un oeuil sur les bases de la prog orientée objet, et comment que ça marche en Java ... (c'est un conseil)
 
penserenjava.free.fr :whistle:


---------------
get amaroK plugin
Reply

Marsh Posté le 17-03-2003 à 13:46:54    

mon ancien problème a été resolu comme ceci
 
public class Grille extends JPanel implements ActionListener
{
public int Tab[][]=new int[52][52];
public JButton buttonTab[][]= new JButton [52][52];
 
public Grille()
 
En fait ca ne fonctionnait pas au depart car je mettais la declaration des tableaux dans le "public Grille" donc ma methode "test" qui devait acceder aux tableaux n'y parvenait pas.
 
 
Là je teste la solution que tu m'as fourni, merci :)

Reply

Marsh Posté le 17-03-2003 à 13:47:00    

Reply

Marsh Posté le 17-03-2003 à 13:53:56    

Tout fonctionne parfaitement ,
j'avais déja vu ce site grâce aux liens du forum mais je trouve que ce n'est pas évident de s'y retrouver :(
 

Reply

Marsh Posté le 17-03-2003 à 13:55:31    

specialguest a écrit :

Tout fonctionne parfaitement ,
j'avais déja vu ce site grâce aux liens du forum mais je trouve que ce n'est pas évident de s'y retrouver :(
 
 


ben ya la VO qui est mieux presenté si tu veux ...


---------------
get amaroK plugin
Reply

Marsh Posté le 18-03-2003 à 11:33:31    

j'ai encore un probleme :(
 

Code :
  1. public class Grille extends JPanel implements ActionListener
  2. {
  3. public int Tab[][]=new int[52][52];
  4. public int Tab2[][]=new int[52][52];
  5. public JButton buttonTab[][]= new JButton [52][52];
  6. public Grille()
  7. {
  8. super();
  9.        this.setSize(500,500); // Taille de la grille
  10.        this.setLayout(new GridLayout(50,50));
  11.        //on remplit les tableaux avec des 0 (case vide)
  12.        for (int i=0; i<52 ; i++){
  13.            for (int j=0; j<52 ;j++){
  14.                Tab[i][j]=Tab2[i][j]=0;
  15.            }
  16.        }
  17.        //Ajout des boutons
  18.        for (int i=1; i<51 ; i++){
  19.            for (int j=1; j<51 ;j++){
  20.  buttonTab[i][j] = new JButton();
  21.  buttonTab[i][j].addActionListener(this);
  22.  buttonTab[i][j].setBackground(Color.white);
  23.  this.add( buttonTab[i][j] );
  24.           }//fin for j
  25.        }// fin for i
  26.      
  27. }//fin public Grille
  28. public void actionPerformed(ActionEvent e){
  29. for(int i=1;i<51;i++){
  30.     for(int j=1;j<51;j++){
  31.            ((JButton) e.getSource()).setBackground(Color.black);
  32.                         if (e.getSource()==buttonTab[i][j]){
  33.              Tab[i][j]=Tab2[i][j]=1;
  34.                         System.out.println("Tab2="+Tab2[i][j]);
  35.                         }
  36.                 }
  37.       }
  38. }//fin actionPerformed
  39. /*****************************************************FONCTION DE TEST*********************************************/
  40. //Traitement du tableau
  41. public void Tester(){
  42.    for(int i=1 ; i<51 ; i++){
  43.       for (int j=1 ; j<51 ; j++){
  44.        
  45.         //etat de la cellule testée
  46.      int etat=Tab2[i][j]; // etat de la cellule
  47.         int cpt=0 ;//compteur qui sert a stocker le nombre de voisins en vie
  48.  System.out.println("etat"+etat);
  49.         //tester les voisins
  50.         cpt = Tab2[i-1][j-1] + Tab2[i][j-1] + Tab2[i+1][j-1] + Tab2[i+1][j] + Tab2[i+1][j+1] + Tab2[i][j+1] + Tab2[i-1][j+1] + Tab2[i-1][j];
  51.        // System.out.println("cpt"+cpt);
  52.         if(((etat == 0) && (cpt ==3)) ||  ((etat == 1) && ((cpt == 3) || (cpt == 2)))){
  53.      etat=1;
  54.      }
  55.      else etat=0;
  56.  if (etat==1){
  57.   Tab[i][j]=etat;
  58.   (buttonTab[i][j]).setBackground(Color.black);
  59.   }
  60.         else if (etat==0){
  61.       Tab[i][j]=etat;
  62.       (buttonTab[i][j]).setBackground(Color.white);
  63.       }
  64.      }//for j
  65.    }//for i
  66. }//fin Tester */


 
 
ici

Code :
  1. public void actionPerformed(ActionEvent e){
  2. for(int i=1;i<51;i++){
  3.     for(int j=1;j<51;j++){
  4.            ((JButton) e.getSource()).setBackground(Color.black);
  5.                         if (e.getSource()==buttonTab[i][j]){
  6.              Tab[i][j]=Tab2[i][j]=1;
  7.                         System.out.println("Tab2="+Tab2[i][j]);
  8.                         }
  9.                 }
  10.       }
  11. }//fin actionPerformed


le println affiche bien 1 pour Tab2
 
mais quand je cherche a afficher l'etat dans la methose tester
il m'affiche des 80,10,120 etc.. enfin des chiffres qui sortent dont je ne sais où.

Reply

Marsh Posté le 18-03-2003 à 12:04:18    

Elle est appelée ou ta fonction Tester() ?


---------------
get amaroK plugin
Reply

Marsh Posté le 18-03-2003 à 14:05:16    

dans la classe MainFrame , associée au bouton "demarrer"
 

Code :
  1. public class MainFrame extends JFrame
  2. {
  3.     boolean condition=false;
  4. private Grille grille = new Grille();
  5.     public MainFrame()
  6. {
  7.  super("Le Jeu de la Vie" );
  8. /****************************************INITIALISATION DES BOUTONS*************************************/
  9.        
  10.         JButton startBtn = new JButton("Démarrer" );
  11.         startBtn.setToolTipText("Lancer le jeu de la vie" );//info bulle
  12.         startBtn.addActionListener(
  13.          new ActionListener()
  14.                 {
  15.                         public void actionPerformed(ActionEvent e)
  16.                         {
  17.                         System.out.println ("Demarrage" );
  18.                         //Lancer un tester dans grille
  19.                          int i=0;
  20.                          do {
  21.                          grille.Tester();
  22.       i++;
  23.                       // grille.Synchroniser();
  24.                          }while(i<10);
  25.                         }
  26.                  }
  27.         );//startBtn


Message édité par specialguest le 18-03-2003 à 14:08:59
Reply

Marsh Posté le 18-03-2003 à 14:09:23    

specialguest a écrit :

dans la classe MainFrame , associée au bouton "demarrer"


ben alors, c'est que ca doit etre modifie a un endroit alors [:spamafote]  
 
verifie si t'as pas un = a la place d'un == par exemple :whistle:


---------------
get amaroK plugin
Reply

Marsh Posté le 18-03-2003 à 14:43:12    

franchement je vois pas :(
g viré le do while pour etre plus sur mais ca fait tjs pareil,
 
"etat" prend des valeurs non conformes
 
tu es sûr que c'est un probleme de = ?


Message édité par specialguest le 18-03-2003 à 15:21:12
Reply

Marsh Posté le 18-03-2003 à 16:36:25    

j'ai trouvé une erreur dans une de mes generations de nombres aleatoires mais ca ne concerne pas le pb present :(
 
EDIT:en fait si , c'est lui qui me faussait mes resultats d'etat :D


Message édité par specialguest le 18-03-2003 à 16:45:47
Reply

Marsh Posté le 18-03-2003 à 16:44:47    

specialguest a écrit :


je vois pas le probleme :'(


ben moi non plus !
 
Si tu veux que qqun puisse voir ou ca merdouille nimbouille, faudrait ptet nous en montrer un peu plus ... [:zebra33]


---------------
get amaroK plugin
Reply

Marsh Posté le 18-03-2003 à 16:51:04    

bah en fait le "grille" que j'ai mis est quasiment complet , il y vaait en plus une fonction de generation de nombre aleatoire pour remplir la grille mais j'affectais des valeurs a la con a la place d'avoir uniquement des 0 et des 1
 
Perdre une demi journee pour une connerie comme ca :( , j'ai honte
 

Code :
  1. public void Remplir(){
  2. for (int i=1; i<51 ; i++){
  3.        for (int j=1; j<51 ;j++){
  4.  Tab[i][j]=Tab2[i][j]=(int)((Math.random()*20));//remplissage aléatoire
  5.         if (Tab[i][j]==1){
  6.         (buttonTab[i][j]).setBackground(Color.black);
  7.  }
  8.    else
  9.     Tab[i][j]=Tab2[i][j]=0;
  10.   }
  11. }
  12. }//Remplir


 
j'avais pas mis de else pour remettre a 0 tout ce qui n'etait pas a 1. A present cette partie fonctionne.


Message édité par specialguest le 18-03-2003 à 16:54:07
Reply

Marsh Posté le 19-03-2003 à 14:21:43    

J'ai pas tout lu, paske j'ai pas trop le temps ... mais bon heuuuu, c'est bof ta gestion des ActionListener :heink:  
 
En general, c'est plus lisible d'utiliser  

Code :
  1. TaClasse implements ActionListener {
  2. ...
  3.    tonBouton.addActionListener(this);
  4.    tonBouton.setActionCommand("nomAction" );
  5.    tonAutreBouton.addActionListener(this);
  6.    tonAutreBouton.setActionCommand("autreAction" );
  7. ...
  8.    public void actionPerformed(ActionEvent e) {
  9.       if (e.getActionCommand().equals("nomAction" )) {
  10.           ...
  11.       } else if (e.getActionCommand().equals("autreAction" )) {
  12.          ...
  13.       } else ... et c'est Terra
  14.    }
  15. }


par exemple ! On peut meme pousser le vice a faire une classe speciale qui implemente ActionListener, mais bon ...


---------------
get amaroK plugin
Reply

Marsh Posté le 19-03-2003 à 14:33:37    

je vais essayer de rendre ca plus propre , mais bon c'est mon premier projet en java alors je tatonne un peu.
 
En cours on te file 2-3 bases et apres c'est démerde toi :(

Reply

Marsh Posté le 20-03-2003 à 12:05:51    

hop j'ai refait tout propre mais j'ai toujours les memes problemes :
-je n'arrive pas à temporiser
- le programme semble faire tout ses calculs et juste a la fin il affiche super vite tous les deplacements des boutons :(
 
MainFrame.java

Code :
  1. public class MainFrame extends JFrame implements ActionListener {
  2.  
  3.     boolean condition=false;
  4. private Grille grille = new Grille();
  5.     private static Object toto = new Object();
  6.     public MainFrame(){
  7.         //Ajouter ActionListener et ActionCommand
  8.         startBtn.addActionListener(this);
  9.         startBtn.setActionCommand("start" );
  10.         exitBtn.addActionListener(this);
  11.         exitBtn.setActionCommand("exit" );
  12. stopBtn.addActionListener(this);
  13. stopBtn.setActionCommand("stop" );
  14. rempBtn.addActionListener(this);
  15.         rempBtn.setActionCommand("remplir" );
  16.                
  17.         // ajout des bontons dans le JPanel dédié
  18.         JPanel buttonPane = new JPanel(new GridLayout(0,1));
  19.         buttonPane.add(startBtn);
  20.         buttonPane.add(stopBtn);
  21.         buttonPane.add(rempBtn);
  22.         buttonPane.add(exitBtn);
  23.         buttonPane.add(forme);
  24.         // this référence MainFrame, donc une JFrame
  25.         // ajout des JPanel à la JFrame
  26.         Container c = this.getContentPane();
  27.         c.add(grille, BorderLayout.CENTER);
  28.         c.add(buttonPane, BorderLayout.EAST);
  29.         this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
  30.         this.setSize(550,500);
  31.         this.show();
  32. }//MainFrame
  33.  
  34. public void actionPerformed(ActionEvent e){
  35.   if (e.getActionCommand().equals("start" )){
  36.   //Lancer un tester dans grille
  37.          int i=0;
  38.   do {
  39.           grille.tester();
  40.    grille.synchroniser();
  41.           //temporisation();
  42.           //rafraichir();
  43.           i++;
  44.          }while(i<200);//while(condition=true);
  45.         }
  46.          else if (e.getActionCommand().equals("exit" )){
  47.           System.exit(0);
  48.           }
  49.   else if (e.getActionCommand().equals("stop" )){
  50.    //condition=true;
  51.   }
  52.   else if (e.getActionCommand().equals("remplir" )){
  53.       grille.remplir();
  54.      }
  55.       }
  56.  
  57.  void temporisation(){
  58.     try {
  59.      synchronized(toto){
  60.         this.wait(500);}
  61.     }
  62.     catch (InterruptedException x){
  63.         System.out.println("Un problème s'est produit !" );
  64.     }
  65.    }//temporisation
  66. public void rafraichir(){
  67.         this.repaint();
  68.         this.show();   
  69. }//rafraichir  
  70. public static void main(String[] args){
  71.         MainFrame m = new MainFrame();
  72.     }
  73. }


 
Grille.java

Code :
  1. public class Grille extends JPanel implements ActionListener
  2. {
  3. public int Tab[][]=new int[52][52];
  4. public int Tab2[][]=new int[52][52];
  5. public JButton buttonTab[][]= new JButton [52][52];
  6. public Grille()
  7. {
  8. super();
  9.        this.setSize(500,500); // Taille de la grille
  10.        this.setLayout(new GridLayout(50,50));
  11.        //on remplit les tableaux avec des 0 (case vide)
  12.        for (int i=0; i<52 ; i++){
  13.            for (int j=0; j<52 ;j++){
  14.                Tab[i][j]=Tab2[i][j]=0;
  15.            }
  16.        }
  17.        //Ajout des boutons
  18.        for (int i=1; i<51 ; i++){
  19.            for (int j=1; j<51 ;j++){
  20.  buttonTab[i][j] = new JButton();
  21.  buttonTab[i][j].addActionListener(this);
  22.  buttonTab[i][j].setBackground(Color.white);
  23.  this.add( buttonTab[i][j] );
  24.           }//fin for j
  25.        }// fin for i
  26.      
  27. }//fin public Grille
  28. public void actionPerformed(ActionEvent e){
  29. for(int i=1;i<51;i++){
  30.     for(int j=1;j<51;j++){
  31.            ((JButton) e.getSource()).setBackground(Color.black);
  32.                         if (e.getSource()==buttonTab[i][j]){
  33.              Tab[i][j]=Tab2[i][j]=1;
  34.                         System.out.println("Tab2="+Tab2[i][j]);
  35.                         }
  36.                 }
  37.       }
  38. }//fin actionPerformed
  39. /*****************************************************FONCTION DE TEST*********************************************/
  40. //Traitement du tableau
  41. public void tester(){
  42.    for(int i=1 ; i<51 ; i++){
  43.       for (int j=1 ; j<51 ; j++){
  44.        
  45.         //etat de la cellule testée
  46.      int etat=Tab2[i][j]; // etat de la cellule
  47.         int cpt=0 ;//compteur qui sert a stocker le nombre de voisins en vie
  48.         //tester les voisins
  49.         cpt = Tab2[i-1][j-1] + Tab2[i][j-1] + Tab2[i+1][j-1] + Tab2[i+1][j] + Tab2[i+1][j+1] + Tab2[i][j+1] + Tab2[i-1][j+1] + Tab2[i-1][j];
  50.      
  51.         if(((etat == 0) && (cpt ==3)) || ((etat == 1) && ((cpt == 3) || (cpt == 2)))){
  52.      etat=1;
  53.      }
  54.      else etat=0;
  55.  if (etat==1){
  56.   Tab[i][j]=etat;
  57.   (buttonTab[i][j]).setBackground(Color.black);
  58.   }
  59.         else if (etat==0){
  60.       Tab[i][j]=etat;
  61.       (buttonTab[i][j]).setBackground(Color.white);
  62.    } 
  63.      }//for j
  64.    }//for i
  65. }//fin tester */
  66. /*********************************************************************************************************************/
  67. public void remplir(){
  68. for (int i=1; i<51 ; i++){
  69.        for (int j=1; j<51 ;j++){
  70.  Tab[i][j]=Tab2[i][j]=(int)((Math.random()*20));//remplissage aléatoire
  71.         if (Tab[i][j]==1){
  72.         (buttonTab[i][j]).setBackground(Color.black);
  73.  }
  74.    else
  75.     Tab[i][j]=Tab2[i][j]=0;
  76.   }
  77. }
  78. }//remplir
  79. public void synchroniser(){
  80. for (int i=1; i<51 ; i++){
  81.          for (int j=1; j<51 ;j++){
  82.             Tab2[i][j]=Tab[i][j];
  83.          }
  84.     }
  85. }//synchroniser         
  86.        
  87.  
  88. }


Message édité par specialguest le 20-03-2003 à 15:24:36
Reply

Marsh Posté le 20-03-2003 à 13:38:26    

ok ok
 
Bon en fait, si tu veux qu'on prenne la peine de lire ton code pour voir ce qui cloche, essaye d'enlever les trucs qu'on s'en bat les c******, genre les Tooltip, etc ... enfin c'est mon avis ... :)


---------------
get amaroK plugin
Reply

Marsh Posté le 20-03-2003 à 15:19:29    

c'est parti :)

Reply

Marsh Posté le 20-03-2003 à 15:24:26    


Ok c'est deja un peu mieux  ;)  
Mais perso, je pourrai pas regarder tout de suite ...


---------------
get amaroK plugin
Reply

Marsh Posté le 20-03-2003 à 15:28:17    

c'est pas grave , deja tes conseils de depart m'ont permis de rendre mon code plus clair :)
 
je resume plus clairement le probleme
en evitant les points qui fonctionnent
 
on part d'un tableau rempli de 0 , en cliquant sur les cases ou en appuyant sur 'remplissage' le tableau se rempli avec quelques 1.
Cette partie fonctionne
 
quand je teste (bouton demarrer)
boucle qui fait :
grille.tester();
grille.synchroniser();
 
le probleme semble se situer ds le test. le programme boucle bien mais il calcule tout les generation (j'ai fait un test avec 200) et une fois qu'il a fini le calcul , il affiche ultra rapidement a l'ecran les 200 generations et se termine sur un etat 'stable'
 
pourtant mon code me semble juste pour 'tester'
 
boucle avec un test, suivant le test on affiche 'case noire' ou 'case blanche' , puis on continue le test en boucle jusqu'a avoir fait une fois tout el tableau.
 
puis cette boucle est effectuée elle meme 200 fois par le 'MainFrame'
 
voila :)


Message édité par specialguest le 20-03-2003 à 15:32:22
Reply

Marsh Posté le 20-03-2003 à 15:47:15    

En fait ton bleme est que tu voudrait voir progressivement le remplissage c'est ca ?


---------------
get amaroK plugin
Reply

Marsh Posté le 20-03-2003 à 15:57:28    

oui en fait il fait comme si il calculait toutes les generations et seulement une fois les 200 generations calculées , il affiche.
Mais il ne se contente pas d'afficher juste la derniere, il fait comme un 'film en accéléré' au lieu de rafraichir a chaque calcul :(

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed