int current = 0; MyCircle [] circles = new MyCircle [4]; int f = 0; // fill color boolean circleOver = false; float circleX = 250; float circleY = 250; // Position of circle int circleSize = 50; // Diameter of circle void setup() { ellipseMode(CENTER); size(500, 500); fill(f,150); noStroke(); smooth(); for (int i=0; i <= 3; i++) { circles[i] = new MyCircle(circleX, circleY, circleSize+(i*50)); } } void draw() { update(mouseX, mouseY); fill(f,150); background(255-f); for (int i=0; i <= 3; i++) { circles[i].display(); circles[i].move(mouseX, mouseY, 10+(i*20)); } } void update(int x, int y) { if( overCircle(circleX, circleY, circleSize) ) { circleOver = true; f = 0; } else { circleOver = false; f = 255; } } class MyCircle { float xpos; // xposition float ypos ; // yposition int d; MyCircle(float ixp, float iyp, int id) { xpos = ixp; ypos = iyp; d = id; } void move (float posX, float posY, float damping) { float dif = ypos - posY; if (abs(dif) > 1) { ypos -= dif/damping; } dif = xpos - posX; if (abs(dif) > 1) { xpos -= dif/damping; } } void display() { ellipse(xpos, ypos, d, d); } } boolean overCircle(float x, float y, int diameter) { float disX = x - mouseX; float disY = y - mouseY; if(sqrt(sq(disX) + sq(disY)) < diameter/2 ) { return true; } else { return false; } }