openobject.org

Racing Ameba

From Physical Programming

/* an update version of the Amebas...
this program plays with the scaling of .png images, might be useful*/

int numFrames = 24;
int frame = 0;
PImage[] images = new PImage[numFrames];
int x = 0;
int y = 0;
int z = 0;

void setup(){
 size(500, 200);
 //frameRate(45);

 images[0]  = loadImage("0001.png");
 images[1]  = loadImage("0002.png"); 
 images[2]  = loadImage("0003.png");
 images[3]  = loadImage("0004.png"); 
 images[4]  = loadImage("0005.png");
 images[5]  = loadImage("0006.png"); 
 images[6]  = loadImage("0007.png");
 images[7]  = loadImage("0008.png"); 
 images[8]  = loadImage("0009.png");
 images[9]  = loadImage("0010.png"); 
 images[10]  = loadImage("0011.png");
 images[11]  = loadImage("0012.png");
 images[12]  = loadImage("0013.png");
 images[13]  = loadImage("0014.png"); 
 images[14]  = loadImage("0015.png");
 images[15]  = loadImage("0016.png"); 
 images[16]  = loadImage("0017.png");
 images[17]  = loadImage("0018.png"); 
 images[18]  = loadImage("0019.png");
 images[19]  = loadImage("0020.png"); 
 images[20]  = loadImage("0021.png");
 images[21]  = loadImage("0022.png"); 
 images[22]  = loadImage("0023.png");
 images[23]  = loadImage("0024.png"); 
}
  
void draw(){
 background(255,205,205);
 drawCell(x);
 bigCell(y);
 smallCell(z);
 x++;
 if (x>width)
 x=-50; 
 
 y++;
 if (y>width/2)
 y=-50;
 
 z++;
 if (z>width*2)
 z=-10;
}

void drawCell(int x)
{
 frame = (frame+1)%numFrames;
 image(images[frame], x, 10);
}

void bigCell(int y)
{
 scale(2);
 frame = (frame+1)%numFrames;
 image(images[frame], y, 50);
}

void smallCell(int z)
{
 scale(0.25);
 frame = (frame+1)%numFrames;
 image(images[frame], z, 150);
}