Projet DdR: Jeu de la vie (2013-2014)

 

 

Ce projet consiste ˆ Žtudier le Jeu de la Vie.

 

1, PrŽsentation du jeu de la vie

 

Faire la connaissance du jeu de la vie, et rendre un pre-rapport.


2, DŽveloppement dÕun programme simple du jeu de la vie

 

DŽvelopper un programme simple pour conna”tre davantage ce jeu.

 

Une classe AfficheJeu est ˆ votre disponibilitŽ, qui affiche la grille avec :

á          Cellule

o    etat : boolean

o    + ce qui vous semble utile

á          Grille

o    g : Cellule[ ][ ]

o    aj : AfficheJeu, une fen�tre pour afficher la grille g

o    + ce qui vous semble utile

á          AfficheJeu 

o    une classe de JFrame pour afficher la grille (ˆ donner)

 

3, Etude de lÕŽvolution de diffŽrentes configurations initiales

 

Utiliser le logiciel du site (http://www.dcode.fr/jeu-de-la-vie) et le document du site (http://math.pc.vh.free.fr/divers/life/regles.htm) pour tester lÕŽvolution de diffŽrentes configurations initiales.

 

4, Pour aller plus loin

 

Le jeu de la vie modŽlise un syst�me dynamique, et il sugg�re que la complexitŽ apparente du monde rŽel pourra”t �tre en rŽalitŽ les consŽquence d'une foule de d'interactions simples...

 

Faire quelques rŽflexions et commentaires sur ce sujet selon votre Žtude des documents.

 

5, ModalitŽ de contr™le de connaissance

 

La note est composŽe de :

á          le pre-rapport

á          le rapport

á          la soutenance : le 9/1/2014, 14h-18h

 

6, RŽfŽrence

á          La partie du code est basŽe sur un exercice proposŽ par FrŽdŽric Furst

á          http://fr.wikipedia.org/wiki/Jeu_de_la_vie

á          http://www.lifl.fr/~delahaye/dnalor/Jeudelavie.pdf  - Un article de Jean-Paul DELAHAYE Ç Le royaume du Jeu de la vie È

á          Le poly simple du cours  

 

Annexe :

 

1, La classe AfficheJeu.java

2, La partie du code pour la mŽthode de simulation() dans la class Grille :

                  void simulation(){

                                   while(true){

                                                     try{Thread.sleep(200);} catch(InterruptedException e){}

                                                         for(int i=0;i<g.length;i++){

                                                                                        for(int j=0;j<g[0].length;j++){

                                                                                                          g[i][j].calculEtatSuivant();

                                                                                        }

                                                                       }

                                                                       for(int i=0;i<g.length;i++){

                                                                                        for(int j=0;j<g[0].length;j++){

                                                                                                          int k = g[i][j].evolue();

                                                                                                          if(k!=0) this.changeVoisines(i,j,k);

                                                                                        }

                                                                       }

                                                     this.aj.repaint();

                                   }

                  }

                 

                  void eveille(int x, int y){

                                   this.g[x][y].etat = true;

                                   this.changeVoisines(x,y,1);

                                   System.out.println("x= "+x+" y= "+y+" nbVois= "+g[x][y].voisines);

 

                  }

                 

                  public static void main(String[] args){

                                   Grille gr = new Grille(12,12);

                                   gr.eveille(6,2);

                                   gr.eveille(6,3);

                                   gr.eveille(8,2);

                                   gr.eveille(8,3);

                                   gr.eveille(9,1);

                                   gr.eveille(9,3);

                                   gr.eveille(10,3);

                                   gr.aj.repaint();

                                   gr.simulation();

                  }