class Fly {
float xpos, ypos, xspeed, yspeed;
int xdir = 1;
int ydir = 1;
int size = 70;
int w = 70;
int h = 30;
Fly(float tempXpos, float tempYpos, float tempXspeed, float tempYspeed) {
xpos = tempXpos;
ypos = tempYpos;
xspeed = tempXspeed;
yspeed = tempYspeed;
}
void display() {
fill(random(0),random(255),random(255),50);
ellipseMode(CENTER);
ellipse(xpos,ypos, random(w), random(h)); //random w&h create flapping effect
}
void go() {
xpos += random(xspeed*xdir);
ypos += random(yspeed*ydir);
//Tells shapes to stay within screen boundaries
if(xpos > width-size || xpos < 0 ) {
xdir *= -1;
}
if (ypos > height-size || ypos < 0) {
ydir *= -1;
}
}
}
Fly[] fly1;
int numFly1 = 800;
More[] more;
int numMore = 50;
//variables declared globally, not in draw
float xpos =30;
float ypos = 40;
float xspeed = 15.0;
float yspeed = 10.0;
void setup() {
size(1024,768);
noCursor();
fly1 = new Fly[numFly1];
for(int i = 0; i < numFly1; i++){
fly1[i] = new Fly(xpos,ypos,xspeed, yspeed);
}
//belong in separate for loopss
more = new More[numMore];
for(int j=0; j< numMore; j++) {
more[j] = new More(xpos,ypos,xspeed,yspeed);
}
}
void draw() {
smooth();
noStroke();
background(0);
for(int i = 0; i < numFly1; i++){
fly1[i].display();
fly1[i].go();
}
for(int j=0; j < numMore; j++) {
more[j].display();
more[j].go();
}
}
class More extends Fly {
More(float xpos, float ypos, float xspeed, float yspeed) {
super(xpos, ypos, xspeed, yspeed);
}
void display() {
fill(random(255),random(255),random(0),100);
ellipseMode(CENTER);
ellipse(xpos,ypos, random(w-10), random(h-10));
}
void go() {
xpos += (random(xdir*yspeed))*-10 ;
ypos += (random(ydir*xspeed))*-1 ;
if(xpos > width-size || xpos < 0 ) {
xdir *= -1;
}
if (ypos > height-size || ypos < 0) {
ydir *= -1;
}
}
}