//二次元セル・オートマトン mod変更で模様変えられる
int num = 128;
int mod = 8;
int state = new int[num][num];
int g_black = color(0);
void setup(){
frameRate(10);
size(1024,1024);
background(g_black);
colorMode(HSB,100);
initializeState();
noStroke();
}
void draw(){
drawcall();
updateState();
}
void drawcall(){
for(int i=0;i<num;i++){
for(int j=0;j<num;j++){
int val = state[i][j];
int len = 1024/num;
square(i*len,j*len,len);
}
}
}
int transition(int i,int j){
int nextC;
nextC = state[(i-1+num)%num][j] +
state[i][(j-1+num)%num] +
state[i][j] +
state[i][(j+1)%num] +
state[(i+1)%num][j];
return nextC % mod;
}
void updateState(){
int nextState = new int[num][num];
for(int i=0;i<num;i++){
for(int j=0;j<num;j++){
nextState[i][j] = transition(i,j);
}
}
state = nextState;
}
void initializeState(){
for(int i=0;i<num;i++){
for(int j=0;j<num;j++){
if(i==num/2 && j==num/2){
state[i][j] = 1;
}else{
state[i][j] = 0;
}
}
}
}
*1:100/(mod+1