import java.awt.*; import java.applet.*; import com.sun.j3d.utils.geometry.Box; import javax.media.j3d.Appearance; import javax.media.j3d.Geometry; import javax.media.j3d.GraphicsContext3D; import javax.media.j3d.Material; import javax.vecmath.Color3f; public class Case { int x,y,z; //coordonnees dans l'espace boolean Estoccupee;// Vrai si elle est occupée Faux sinon boolean AncienEtat;// Etat de la cellule la génération précédente. private GraphicsContext3D g; private Appearance cubeAppearance; public Case(int x,int y,int z,GraphicsContext3D appletG) { g = appletG; this.x=x; this.y=y; this.z=z; } // déclarer la cellule occupée public void creer () { this.Estoccupee=true; } public void paint() { int nx,ny,nz; nx=10*x; ny=10*y; nz=10*z; if (Estoccupee) { // si cellule occupée g.draw(Cube(0.4f,0.4f,0.4f,0.4f,Color.WHITE));} else { // si cellule vide g.draw(Cube(0.4f,0.4f,0.4f,0.4f,Color.BLACK)); } } private void createAppearance(Color c) { cubeAppearance = new Appearance(); Color3f ambientColour = new Color3f(); ambientColour.set(c); Color3f emissiveColour = new Color3f(0.0f, 0.0f, 0.0f); Color3f specularColour = new Color3f(1.0f, 1.0f, 1.0f); Color3f diffuseColour = new Color3f(); diffuseColour.set(c); float shininess = 20.0f; cubeAppearance.setMaterial(new Material(ambientColour, emissiveColour, diffuseColour, specularColour, shininess)); } private Geometry Cube(float f, float h, float i, float j,Color c) { Box box = new Box(0.04f, 0.04f, 0.04f, cubeAppearance); return null; } public int Etat() { int occupe = 1; int vide=0; if(AncienEtat) return occupe; else return vide; } public void Evoluer(){ AncienEtat= Estoccupee; } public void NextGeneration(int nbrVoisins){//nbrVoisin represente le nombre de cellule occupees voisines if(AncienEtat) // Si la cellule est occuppée alors elle le reste si nbrVoisins=3 ou 4 Estoccupee = (nbrVoisins==3)||(nbrVoisins==4); else // la cellule nait si elle a 4 voisins occupés Estoccupee = (nbrVoisins==4); } }