5 static final Random random = new Random();
7 static final int LARGEUR = 1200;
8 static final int HAUTEUR = 900;
10 static final int VIVANT = 0x000000ff; // bleu
11 static final int MORT = 0x00ffffff; // blanc
18 static Cell[][] cells;
20 static void majVoisins(int i, int j, int delta)
22 for (int k = i - 1 ; k <= i + 1 ; ++k)
23 for (int l = j - 1 ; l <= j + 1 ; ++l)
24 if (k != i || l != j) {
25 int vi = (k + LARGEUR) % LARGEUR;
26 int vj = (l + HAUTEUR) % HAUTEUR;
27 cells[vi][vj].neigh += delta;
31 static void dessine(DrawingWindow w, int i, int j, int couleur)
37 static void init(DrawingWindow w)
39 cells = new Cell[LARGEUR][HAUTEUR];
40 for (int i = 0 ; i < LARGEUR ; ++i)
41 for (int j = 0 ; j < HAUTEUR ; ++j)
42 cells[i][j] = new Cell();
43 for (int i = 0 ; i < LARGEUR ; ++i)
44 for (int j = 0 ; j < HAUTEUR ; ++j)
45 cells[i][j].neigh = 0;
46 for (int i = 0 ; i < LARGEUR ; ++i)
47 for (int j = 0 ; j < HAUTEUR ; ++j) {
48 cells[i][j].now = cells[i][j].next = random.nextBoolean();
49 if (cells[i][j].now) {
51 dessine(w, i, j, VIVANT);
56 static void update0(DrawingWindow w)
58 for (int i = 0 ; i < LARGEUR ; ++i)
59 for (int j = 0 ; j < HAUTEUR ; ++j) {
60 switch (cells[i][j].neigh) {
62 // cells[i][j].next = cells[i][j].now; // useless
65 cells[i][j].next = true;
68 cells[i][j].next = false;
73 static void update1(DrawingWindow w)
75 for (int i = 0 ; i < LARGEUR ; ++i)
76 for (int j = 0 ; j < HAUTEUR ; ++j) {
77 if (cells[i][j].now) {
78 if (!cells[i][j].next) {
79 cells[i][j].now = false;
81 dessine(w, i, j, MORT);
84 if (cells[i][j].next) {
85 cells[i][j].now = true;
87 dessine(w, i, j, VIVANT);
93 public static void main(String[] args) {
94 DrawingWindow w = new DrawingWindow("Jeau de la vie", LARGEUR, HAUTEUR);
99 for (int gen = 0 ; ; ++gen) {
101 System.err.println("generation " + gen);