double dist, dire; point p[] = new point[100]; point colb[] = new point[100]; double colh, cols; Color col; //sample [setup, 400, 400]{ int xi = 0; int yi = 0; p[0] = point(0, 0); for(int i = 1; i < p.length; i ++){ xi ++; if(xi ==10){ yi = yi + 1; xi = 0; } p[i] = point(xi *40, yi * 40); } for(int i = 0; i < colb.length; i ++){ colb[i] = point(0., 0); } colh = 0.0; cols = 0.99; setBackColor(0, 0, 0); } [paint]{ clearAll(); for(int i = 0; i < p.length; i++){ col = Color.getHSBColor((float)colh, (float)cols, (float)(colb[i].x/100.)); setColor(col); fillRect(p[i].x, p[i].y, 40, 40); } } [always]{ for(int i = 0; i < p.length; i ++){ if(p[i].x < mouseX && mouseX < p[i].x +40 && p[i].y < mouseY&& mouseY < p[i].y + 40){ dist = colb[i].distanceTo(99, 0); dire = colb[i].directionTo(99, 0); if(100 < dist) dist = 100; colb[i].push(dist, dire); } dist = colb[i].distanceTo(0, 0); dire = colb[i].directionTo(0, 0); if(100 < dist) dist = 100; colb[i].push(dist / 4. ,dire); if(99 < colb[i].x) colb[i].x = 99; if(colb[i].x < 0.) colb[i].x = 0.; } colh += 0.001; if(1.0 < colh) colh = 0.0; }