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 fentre 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 systme dynamique, et il suggre 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();

                  }