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

グローバル if 使いまくりの糞コードです ちったあ参考になるでしょうか。。。

グローバル if 使いまくりの糞コードです ちったあ参考になるでしょうか。。。

//1?
int NUM = 100; //
int [] cell = new int[NUM];// 0: 1:
int [] dcell = new int[NUM];//
int Rsize = 2;//
int right=0, left=0;//
int size = 0;
void setup() {
size(200, 500);
smooth();
background(255);
for (int i=0; i<NUM; i++) {//
//randomfloat 0 - 2 int 0 1
//cell[i] = int(random(0, 2));
cell[i] = 0;
if(i == 49){
cell[i] = 1;
}
//
dcell[i] = cell[i];
}
}
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 (dcell[i] == 0) {
deadecell(i);
}//
else if (dcell[i] == 1) {//
alivecell(i);
}
}
for(int i=0; i<NUM; i++){//cell
dcell[i] = cell[i];
}
size = size + Rsize;// 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*Rsize,size, Rsize, Rsize);
}
}
void deadecell(int i) {// ifor
if (dcell[left] == 1 && dcell[right] == 1) {//
cell[i] = 0;
}
else if (dcell[left] == 1 && dcell[right] == 0 || dcell[left] == 0 && dcell[right] == 1) {//
cell[i] = 1;
}
else if (dcell[left] == 0 && dcell[right] == 0) {//
cell[i] = 0;
}
}
void alivecell(int i) {// ifor
if (dcell[left] == 1 && dcell[right] == 1) {//
cell[i] = 0;
}
else if (dcell[left] == 1 && dcell[right] == 0 ) {//
cell[i] = 0;
}
else if (dcell[right] == 1 && dcell[left] == 0) {//
cell[i] = 1;
}
else if (dcell[left] == 0 && dcell[right] == 0) {//
cell[i] = 1;
}
}//
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX