float redrad; int xr,xg,xb,xy,xbl; int yr=height; int yg=height/2; int yb=height/3; int yy=height/4; int ybl=height/2; int xrdir = (int)(random(20)); int yrdir = (int)(random(7)); int xgdir = 12; int ygdir = 5; int xbdir = 10; int ybdir = 8; int xydir = 2; int yydir = 4; int xbldir = 40; int ybldir = 45; float rpos; float speed; float bouncy,bouncb,bouncg ; float rb; float distg; void setup() { smooth(); size(500,500); background(200,0,0); ellipseMode(CENTER_DIAMETER); framerate(40); } void loop() { background(0,102,255); noStroke(); redBall(); yelBall(); greyBall(); blueBall(); greenBall(); orangeBall(); vioBall(); lbluBall(); blackBall(); bounceg(); bounceb(); } void redBall(){ fill(255,255,0); ellipse(xr,yr,redrad,redrad); redrad = (sqrt(sq (mouseX)+ sq (mouseY)))+8; xr= xr+xrdir; yr= yr+yrdir; if(xr+redrad/2>480) { xrdir = - (int)(random(20)); ; } else if(xr-redrad/2<0) xrdir = (int)(random(20)); if(yr+redrad/2>480) yrdir = -(int)(random(7)); else if(yr-redrad/2<0) yrdir = (int)(random(7)); } void yelBall(){ rb = random(10); fill(255,0,0); ellipse(xg,yg,25+rb,25+rb); xg= xg+xgdir; yg= yg+ygdir; if(xg>480) { xgdir = -12; } else if(xg<0) xgdir = 12; if(yg>480) ygdir = -5; else if(yg<0) ygdir = 5; } void greyBall(){ rb = random(10); rotate(radians(360)); fill(156,156,156); ellipse(xg,yg,20+rb,20+rb); xg= xg+xgdir; yg= yg+ygdir; if(xg>480) { xgdir = -8; } else if(xg<0) xgdir = 8; if(yg>480) ygdir = -4; else if(yg<0) ygdir = 4; } void blueBall(){ fill(0,0,153); ellipse(xb,yb,20,20); xb= xb+xbdir; yb= yb+ybdir; if(xb>480) { xbdir = -12; } else if(xb<0) xbdir = 12; if(yb>480) ybdir = -8; else if(yb<0) ybdir = 8; } void greenBall(){ fill(0,255,0); speed+=PI/60; float speedye = sin(speed)*sin(speed*2)*cos(speed*0.5); ellipse(xy+xy*speedye,yy+yy*speedye,30,30); xy= xy+xydir-int (speedye) ; yy= yy+yydir-int (speedye); if(xy>480) { xydir = -12; } else if(xy<0) xydir = 12; if(yy>480) yydir = -8; else if(yy<0) yydir = 8; } void orangeBall(){ fill(255,102,0); speed+=PI/60; float speedye = sin(speed)*sin(speed*2)*cos(speed*0.5); ellipse(xy+xy*speedye,yy+yy*speedye,30,30); xy= xy+xydir; yy= yy+yydir; if(xy>480) { xydir = -5; } else if(xy<0) xydir = 5; if(yy>480) yydir = -4; else if(yy<0) yydir = 4; } void vioBall(){ fill(255,0,102); speed+=PI/60; float speedye = sin(speed)*sin(speed*2)*cos(speed*0.5); ellipse(xy+xy*speedye,yy+yy*speedye,30,30); xy= xy+xydir; yy= yy+yydir; if(xy>480) { xydir = -7; } else if(xy<0) xydir = 7; if(yy>480) yydir = -6; else if(yy<0) yydir = 6; } void lbluBall(){ fill(255,255,255); ellipse(xb,yb,30,30); xg= xg+xgdir; yg= yg+ygdir; if(xg>480) { xgdir = -14; } else if(xg<0) xgdir = 14; if(yg>480) ygdir = -7; else if(yg<0) ygdir = 7; } void blackBall(){ fill(0,0,0); ellipse(xbl,ybl,25,25); xbl= xbl+xbldir; ybl= ybl+ybldir; if(xbl>480) { xbldir = -2; } else if(xbl<0) xbldir = 2; if(ybl>480) ybldir = -1; else if(ybl<0) ybldir = 1; } void bounceg(){ distg = sqrt( sq (xr)+sq (yr)); float bouncg = radians(redrad-9); float bouncgsol = xr+radians(redrad)-9; float bouncgsag = xr+2*radians(redrad)+9; float bouncgtop = yr+radians(redrad)-9; float bouncgbot = yr+2*radians(redrad)+9; if(distg > redrad) { xgdir = -12; if(xg==480) xgdir = -12; if(xg==0) xgdir = 12; } else if(distg < redrad) xgdir = 12; if(distg < redrad) ygdir = 5; if(yg==0) ygdir = 5; if(yg==480) ygdir = -5; else if(distg > redrad) ygdir = -5; } void bounceb(){ float bouncb = radians(PI*redrad); float bouncbsol = xr-redrad; float bouncbsag = xr+redrad; float bouncbtop = yr-redrad; float bouncbbot = yr+redrad; if(xbbouncbbot) ybdir = -8; }