Processing で 1次元セルオートマトン?

汚いコードです あってるかどうかはわかりません 参考になるのでしょうか?

汚いコードです あってるかどうかはわかりません 参考になるのでしょうか?

  • タグ:
  • タグはありません
//1?
int NUM = 100; //
int [] cell = new int[NUM];// 0: 1:
int Rsize = 5;//
int right=0, left=0;//
int size = 0;
void setup() {
size(500, 1000);
smooth();
background(255);
for (int i=0; i<NUM; i++) {//
//randomfloat 0 - 2 int 0 1
cell[i] = int(random(0, 2));
}
}
void draw() {
drawCells(cell, size);//
for (int i=0; i<NUM; i++) {//
//
// left i - 1right i + 1
if (i == 0) {//,
left = NUM - 1;
right = i + 1;
}
else if (i == 99) {// else
left = i - 1;
right = 0;
}
else {// else i = 00 - 1 -1
left = i - 1;
right = i + 1;
println(""+"["+left+"]");
}
//
//
if (cell[i] == 0) {
deadecell(i);
}//
if (cell[i] == 1) {//
alivecell(i);
}
}
size = size + 5;// 1
}
void drawCells(int[] cells, int size) {// sizey
for (int i=0; i<NUM; i++) {//
fill(0);//
if (cells[i] == 0) {//
fill(255);
}
//
rect(i*5, size, Rsize, Rsize);
}
}
void deadecell(int i) {// ifor
if (cell[left] == 1 && cell[right] == 1) {//
cell[i] = 0;
}
else if (cell[left] == 1 && cell[right] == 0 || cell[left] == 0 && cell[right] == 1) {//
cell[i] = 1;
}
else if (cell[left] == 0 && cell[right] == 0) {//
cell[i] = 0;
}
}
void alivecell(int i) {// ifor
if (cell[left] == 1 && cell[right] == 1) {//
cell[i] = 0;
}
else if (cell[left] == 1 && cell[right] == 0 ) {//
cell[i] = 0;
}
else if (cell[right] == 1 && cell[left] == 0) {//
cell[i] = 1;
}
else if (cell[left] == 0 && cell[right] == 0) {//
cell[i] = 1;
}
}//
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX