LE JEU DE LA VIE

    Document

 
 

Accueil

 
  Présentation  
  L'applet  
  Document  
  Téléchargement  
     

Attention: L'applet de Jeu de la vie besoin Java Runtime Environment (JRE) 6u1


Pour voir le JavaDoc du jeu de la vie. Ici

 

<<Guide de l’utilisation>>

Pour l’applet de Game Of Life, il y a deux parties d’interface graphique :

Une partie est Gille et Cellules

Une autre partie est panneau de contrôle.

Sur la partie panneau de contrôle, il y a certains bouton pour paramètre les générations du cellules, et il y a deux menus déroulants sont pour choisis l’algorithme et choisi la forme de cellule qui a été enregistrer.

Au moment de charge l’applet, certains formes fichiers sont charge automatiquement par une prédéfinition, la prédéfinition est déclarer dans un fichier de configuration: ‘\source\shapes\shapes.txt’. Tous les formes dans ce fichier sont charger par défaut et mettre dans la menu déroulant.

Une zone de texte « Shape file name » est pour charger un autre fichier de forme (ce fichier est sous forme XML) sur ton disque local. Dans la zone de text la chemin du fichier est commence par:

 ‘file:/  Exemple ( pour un fichier 'C:\exemple.xml'  -->  ‘file:/c:/exemple.xml’)

Et pour valider le chargement appuyez sur le bouton « OpenShapeFile », si tous se passe bien, le forme sera ajouter dans la menu déroulant « Shapes », si non il va afficher un erreur sur la panneau.

Pour créer un fichier de forme, il faut crée le fichier (XML) par la main.

La fichier XML dois contient :

<?xml version="1.0" encoding="UTF-8"?>

<shapes>

</shapes>

Pour <Save>la forme dans un fichier, il faut avoir un fichier <Open> en cours. Et plus donner un nom de cette forme dans la zone de texte « New shape name » et appuyer la bouton « SaveInFile ».

 

 

<<Développer une classe de l’algorithme>>

Pour crée une algorithme, il faut de crée une classe qui extend la classe « Algorithm ».

Dans la nouvelle classe de l'algorithme, il faut :

Compléter la méthode :

public abstract State getCellStateByNeighbor(State state, Cell []neighbor );

Les deux paramétrers sont le valeur d’entre de cellier courant.

Donner le valeur des trois variable:

       /*

        * The objet States.

        * In your class, you must redefine this value.

        * They are make up of the color. 

        * Ex:    'Color colors[]=new Color[]{Color.white,Color.red,Color.black};'

        *           'states=new States(3,colors);'

        */

       public States states;

       /*

        * The number loop, it value is possible change with applet interface.

        * In your class, for the method Util.getNombreNeighbor,you need this value. 

        */

       public int neighbor_loop;

       /*

        * The String rule, it value is possible change with applet interface.

        * The form of this value is you want (Ex: '14/45/12' or '1,2,3/4,5'...)

        * In your class, for the method getCellStateByNeighbor(),you need this value. 

        */

       public String rules; 

Attention : Après la création de la classe, pour la classe d'algorithme sois valable dans le programme, il faut ajouter le nom de la classe dans le fichier ‘\source\algorithm\listeAlgorithms.txt’.

 

 

<<Un exemple de la classe d’algorithme>>

package org.univ.paris5.GameOfLife.algorithms;

 

import org.univ.paris5.GameOfLife.Algorithm;

import org.univ.paris5.GameOfLife.States;

import org.univ.paris5.GameOfLife.State;

import org.univ.paris5.GameOfLife.Cell;

import org.univ.paris5.GameOfLife.Util;

 

import java.awt.Color;

 

/**

 * One algoritm with 3 state.

 *

 * @author PengFei DONG

 * @author Ke LIANG

 */

public class Algorithm_8_States extends Algorithm {

         public Algorithm_8_States(){

                   Color colors[]=new Color[]{Color.white,Color.red,Color.black,Color.green};

                   states=new States(4,colors);

                   neighbor_loop=1;

                   rules="22/22";

         }

         public State getCellStateByNeighbor(State state, Cell []neighbor ){

                   int n1=0,n2=0,n3=0,n4=0,i;

                   String nb[]=rules.split("/");

                   String nb1=nb[0];

                   String nb2=nb[1];

                   int numbreNeighbor=Util.getNombreNeighbor(neighbor_loop);

                   //Algoritm....

                   for(i=0;i<numbreNeighbor;i++)

                   {

                            if(neighbor[i].state.getIndex().equals("1")){ n1++;continue;}

                            if(neighbor[i].state.getIndex().equals("2")){ n2++;continue;}

                            if(neighbor[i].state.getIndex().equals("3")){ n3++;continue;}

                            if(neighbor[i].state.getIndex().equals("4")){ n4++;continue;}

                    }

                  

                   if (state.getIndex().equals("2"))

                   {

                            if(nb1.contains(""+n2)) {return states.getStateByIndex("2");}

                            else

                            {

                                     if(nb1.contains(""+n3)) {return states.getStateByIndex("3");}

                                     else

                                     {

                                               return states.getStateByIndex("1");}

                            }

                   }

                   else

                   {

                            if (state.getIndex().equals("3"))

                            {

                                     if(nb1.contains(""+n2)) {return states.getStateByIndex("2");}

                                     else

                                     {if(nb1.contains(""+n4)) {return states.getStateByIndex("4");}

                                     else

                                                        return states.getStateByIndex("1");

                                     }

                            }

                            else

                            {

                                     if(nb2.contains(""+n1)) {return states.getStateByIndex("3");}

                                     else

                                     {

                                               if(nb2.contains(""+n2)) {return states.getStateByIndex("2");}

                                               else

                                               {  if(n1>n4) return states.getStateByIndex("1");

                                                        //System.out.println("*********3");

                                               else return states.getStateByIndex("4");}

                                     }

                            }

                   }

 

         }

}

 

 

<<Les classes diagramme en UML>>

Les classes d’élément

 

Les classes d’algorithme