class Circle
{
  float x;
  float y;
  float rad;

  Circle( float xIn, float yIn, float radIn )
  {
    x = xIn;
    y = yIn;
    rad = radIn;
  }
}

Circle[] circs;
int sel = -1;

void setup()
{
  size( 600, 600 );

  circs = new Circle[ 10 ];
  for ( int idx = 0; idx < 10; ++idx ) {
    circs[idx] = new Circle( 
      random( width ), random( height ), 20 );
  }
}

void draw()
{
  background( 0 );

  fill( 255 );
  for ( int idx = 0; idx < circs.length; ++idx ) {
    Circle c = circs[idx];
    ellipse( c.x, c.y, 2*c.rad, 2*c.rad );
  }
}

void mousePressed()
{
  for ( int idx = circs.length - 1; idx >= 0; --idx ) {
    Circle c = circs[idx];
    if ( dist( c.x, c.y, mouseX, mouseY ) < c.rad ) {
      sel = idx;
      return;
    }
  }
}

void mouseDragged()
{
  // This one is fixed!
  if ( sel >= 0 ) {
    Circle c = circs[sel];
    c.x += mouseX - pmouseX;
    c.y += mouseY - pmouseY;
  }
}

void mouseReleased()
{
  sel = -1;
}