// マウスが押されたら波紋を描く
int N = 100;
int[] x = new int[N]; // 波紋のX座標
int[] y = new int[N]; // 波紋のY座標
int[] d = new int[N]; // 波紋の直径
int stage;

void setup() {
  size(200, 200); // 画面サイズ
  framerate(30); // 描画速度
  for(int i=0; i<N; i++){
    x[i] = y[i] = d[i] = 0; // 値の初期化
  }
  stage=0;
  noFill();
  background(255); // 画面消去
}
// 画面描画
void draw() {
  for(int i=0; i<N; i++){
    if(d[i] > 0) {
      stroke(random(0,255));
      ellipse(x[i], y[i], d[i], d[i]);
      d[i] += 10; // 直径を増やす
    }
  }
}
// マウスが押されたら…
void mousePressed() {
 background(255); // 画面消去
}
// マウスが動いたら…
void mouseMoved() {
  stage++;
  if(stage==N){
    stage=0;
  }
  x[stage] = mouseX; // マウスのX座標
  y[stage] = mouseY; // マウスのY座標
  d[stage] = 1;
}