public class CuteGuy { float x, y; //main co-ordinate int id; int leader; float myScale; //variables for the movement float direction; float speed; float dev; //size of the cuties float ballsize; float radius; //is the cutie on alive public boolean alive; public boolean toDie = false; int dieCount = 0; //degrees of rotation int turn = 4; //color variables int myRed = 255; int myGreen = 157; int myBlue = 206; int myAlpha; public CuteGuy(boolean on, int i, int lead){ id = i; leader = lead; alive = on; } public void cuteSetUp(){ direction = (TWO_PI/100.0) * random(0, 100); speed = 5; dev = (TWO_PI/100.0) * 15; //generate in different random sizes ballsize = random(25, 40); //generate random initial coordinate int myX, myY; if( id % 10 == 0){ myX = int(random(0,(width-(range+100)))); myY = int(random(0,(height-(range+100)))); } else { myX = int(random(cuties[leader].x - range, cuties[leader].x+range)); myY = int(random(cuties[leader].y - range, cuties[leader].y+range)); } x = myX; y = myY; radius = ballsize*2; toDie = false; dieCount = 0; } public void setPoints(){ int myX, myY; if( id % 10 == 0){ myX = int(random(0,(width-50))); myY = int(random(0,(height-50))); } else { myX = int(random(cuties[leader].x - range, cuties[leader].x+range)); myY = int(random(cuties[leader].y - range, cuties[leader].y+range)); while(myX < 0 || myX > width) myX = int(random(cuties[leader].x - range, cuties[leader].x+range)); while(myY < 0 || myY > height) myY = int(random(cuties[leader].y - range, cuties[leader].y+range)); } x = myX; y = myY; myScale = 0; } public void cuteDraw(){ if(toDie == true) { pushMatrix(); translate(x,y); rotate(radians(turn*6)); translate(-x,-y); //draw the cuties dying ellipseMode(CENTER); noStroke(); fill(myRed, myGreen, myBlue, myAlpha); pushMatrix(); translate(x,y); rotate(radians(turn)); translate(-x,-y); myAlpha = 150; fill(0, myAlpha); ellipse(x,y,(ballsize)*1.3,(ballsize/3)*1.3); ellipse(x,y,(ballsize/3)*1.3,(ballsize)*1.3); popMatrix(); myAlpha = 150; fill(0, myAlpha); ellipse(x,y,(ballsize)*1.3,(ballsize/3)*1.3); ellipse(x,y,(ballsize/3)*1.3,(ballsize)*1.3); pushMatrix(); translate(x,y); rotate(radians(turn)); translate(-x,-y); myAlpha = 220; fill(myRed, myGreen, myBlue, myAlpha); ellipse(x,y,ballsize,ballsize/3.5); ellipse(x,y,ballsize/3.5,ballsize); popMatrix(); myAlpha = 220; fill(myRed, myGreen, myBlue, myAlpha); ellipse(x,y,ballsize,ballsize/3.5); ellipse(x,y,ballsize/3.5,ballsize); fill(0, 0, 0, 220); ellipse(x,y,ballsize/2.5,ballsize/2.5); move(); //increment the rotation turn +=4; popMatrix(); ballsize -=.3; dieCount ++; if(dieCount ==60) { alive = false; } }//end if else { if(myScale <1) { myScale +=.01; } pushMatrix(); translate(x,y); scale(myScale); translate(-x,-y); ellipseMode(CENTER); noStroke(); pushMatrix(); translate(x,y); rotate(radians(turn)); translate(-x,-y); myAlpha = 150; fill(0, myAlpha); ellipse(x,y,(ballsize)*1.3,(ballsize/3)*1.3); ellipse(x,y,(ballsize/3)*1.3,(ballsize)*1.3); popMatrix(); myAlpha = 150; fill(0, myAlpha); ellipse(x,y,(ballsize)*1.3,(ballsize/3)*1.3); ellipse(x,y,(ballsize/3)*1.3,(ballsize)*1.3); pushMatrix(); translate(x,y); rotate(radians(turn)); translate(-x,-y); myAlpha = 220; fill(myRed, myGreen, myBlue, myAlpha); ellipse(x,y,ballsize,ballsize/3.5); ellipse(x,y,ballsize/3.5,ballsize); popMatrix(); myAlpha = 220; fill(myRed, myGreen, myBlue, myAlpha); ellipse(x,y,ballsize,ballsize/3.5); ellipse(x,y,ballsize/3.5,ballsize); fill(0, 0, 0, 220); ellipse(x,y,ballsize/2.5,ballsize/2.5); move(); //increment the rotation turn +=4; popMatrix(); }//end else }////end of cutedraw method //cycle to the hot colour void heatColor(){ if(myRed<255) myRed +=2; if(myGreen>157) myGreen-=2; if(myGreen<157) myGreen+=2; if(myBlue>206) myBlue-=2; if(myBlue<206) myBlue+=2; } //cycle to the cold colour void coolColor(){ if(myRed <132) myRed+=2; if(myRed >132) myRed-=2; if(myGreen > 157) myGreen-=2; if(myGreen < 157) myGreen+=2; if(myBlue < 206) myBlue+=2; if(myBlue >206) myBlue-=2; } //cycle to the volt colour void voltColor(){ myRed = 255; myGreen = 255; myBlue = 0; } //random movement of the cutie void move() { direction += (0.5*dev) - ((dev/20) * random(0, 20)); x += speed * cos(direction); y += speed * sin(direction); //this constrains the cutie inside the screen if(id % 10 == 0){ if(x>(width-range*2)|| x<(range*2)){ x -=speed *cos(direction); } if(y>(height-range*2) || y<(range*2)){ y -=speed *sin(direction); } } else { // x += direction; // y += direction; if(x > (cuties[leader].x+range) || x > width-10) x-=(float)(Math.random()*10); if( x < (cuties[leader].x-range) || x < 5) x+=(float)(Math.random()*10); if(y > (cuties[leader].y+range) || y > height-10) y-=(float)(Math.random()*10); if(y < (cuties[leader].y-range) || y<5) y+=(float)(Math.random()*10); } } }////////////////////////////end of the class