====== Jeu de la vie ====== Solution du TD [[nsi:tds:jeux:jeu_de_la_vie|Jeu de la vie]] Comme pour [[nsi:langages:processing:solutions:feu_foret|Feu de forêt]], on exploite ''pixels''. /* définition des couleurs */ color nothing = color(200,200,200); color life = color(50,50,250); final float p_life = 0.3; // probabilité initiale qu'une cellule soit ON void setup(){ size(1000,800); // initialisation de la forêt loadPixels(); // d'abord création aléatoire for (int i=0; i= height)){ return 0; } if ((col<0) || (col>= width)) { return 0; } if (pixels[line*width + col] == life){ return 1; } else { return 0; } } void set_next_state(int line, int col, boolean[] next){ /* on fournit une ligne et une colonne en utilisant la variable globale pixels met à jour le tableau next qui contient l'état suivant */ int compte = is_alive(line-1, col-1) + is_alive(line-1, col) + is_alive(line-1, col+1) + is_alive(line , col-1) + is_alive(line , col+1) + is_alive(line+1, col-1) + is_alive(line+1, col) + is_alive(line+1, col+1); if ((compte == 3) || (compte ==2) && (pixels[line*width+col] == life)) { next[line*width+col] = true; } else { next[line*width+col] = false; } } void draw(){ loadPixels(); // next sert à noter les cases qu'il faudra allumer boolean[] next = new boolean[height*width]; for (int line=0; line= width-demi) { x = width - demi - 1; } int y = mouseY; if (y < demi) { y = demi; } else if (y >= height - demi) { y = height - demi - 1; } loadPixels(); for (int i=-demi; i<= demi; i++){ for (int j=-demi; j<= demi; j++){ if (random(1) <= p_life) { pixels[(y+i)*width + x + j] = life; } } } updatePixels(); }