Help for simple cellular automa
in
Programming Questions
•
1 year ago
Hi everybody,
I am pretty new to Processing and I would really appreciate any help on this script I am working on to create a cellular Automa.Thank you.
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
int gen = 0;
int[] oldGen;
int[] newGen;
int genWidth;
int prevCA;
int currCA;
int nextCA;
int[] Rules;
void setup() {
size(600, 200);
background(0);
noStroke ();
genWidth = width;
oldGen = new int[genWidth];
newGen = new int[genWidth];
rules = new int[8];
rules [0] =1;
rules [1] =1;
rules [2] =1;
rules [3] =1;
rules [4] =1;
rules [5] =1;
rules [6] =1;
rules [7] =1;
}
void Draw()
{
if (gen==0)
for (int i=0; i
{
oldGen[i] = int(0.5+random(1));
newGen[i] = int(0.5+random(1));
}
}
else
{
//calculate new generation
for (int i=0; i
{
prevCA = oldGen[(i-1+genWidth)%genWidth];
currCA = oldGen[i];
nextCA = oldGen[(i+1)%genWidth];
}
if (currCA ==1)
{
if (nextCA ==1)
{
if (prevCA==1)
{
newGen[i]=rules [0];
}
else
{
newGen[i]=rules [1];
}
}
else
{
if (prevCA==1)
{
newGen[i]=rules [2];
}
else
{
newGen[i]=rules [3];
}
}
}
else
{
if (nextCA ==1)
{
if (prevCA==1)
{
newGen[i]=rules [4];
}
else
{
newGen[i]=rules [5];
}
}
else
{
if (prevCA==1)
{
newGen[i]=rules [6];
}
else
{
newGen[i]=rules [7];
}
}
}
}
//draw new generation
for (int i=0; i
if (newGen[i]==1)
{
fill(255);
}
else
{
fill(0);
}
rect(i, gen, 3, 3);
//replace the old generation with the new generation
for (int i=0; i
{
oldGen[i]= newGen[i];
}
//increment the new generation count
gen++;
1