class Split { boolean alive = false; boolean captured = false; float posX ; float posY ; float side = 13; float velX = random(-1,1); float velY = random(-1,1); float bdifx ; float bdify ; float nextVelX ; float nextVelY ; float grav = 0.05; float bounce = 0.9; float energyX = 0; float energyY = 0; float R = 255; float G = 255; float B = 255; Split() { posX = random(width); posY = 10; //nextVelX = random(-1,1); //nextVelY = random(-1,1); //the_array = array; //my_element = element; } void draw() { if (alive){ fill (R, G, B); ellipse(posX,posY,side,side); if (captured) { energyX *= 0.75; energyX +=mouseX-posX; posX = mouseX; energyY *= 0.9; energyY +=mouseY-posY; posY = mouseY; } else { // ball free to move posX += velX*4; posY += velY*4; velY += grav; } // stay in screen bounds if (posX > width-(side/2) || posX < (side/2)) { velX = -velX; this.R = (random(50,255)); this.G = (random(50,255)); this.B = (random(50,255)); } if (posY > height-(side/2) || posY < (side/2)) { velY = -velY; } // decelerate slightly velX *= 0.99; velY *= 0.99; } } void mousePressed() { if (dist(posX,posY,mouseX,mouseY) < 10) { energyX = 0; energyY = 0; captured = true; //posX = bdifx-mouseX; //posY = bdify-mouseY; } bdifx = mouseX-posX; bdify = mouseY-posY; } void mouseReleased() { if (captured) { captured = false; velX = energyX * 0.1; velY = energyY * 0.1; posX = mouseX-bdifx; posY = mouseY-bdify; } } }