point p[] = new point[80]; double dist[] = new double[p.length]; double dire[] = new double[p.length]; point hCol; double ss[] = new double[p.length]; double bb[] = new double[p.length]; Color col; boolean bousou; double hdist, hdire; //sample [setup, 300, 300]{ for(int i = 0; i < p.length; i ++){ dist[i]= 5; dire[i] = 2 * Math.PI * random(); p[i] = point(300 * random(), 300 *random()); ss[i] = 49 + 50 * random(); bb[i] = 49 + 50 * random(); } hCol = point(70., 0.); bousou = false; setBackColor(255, 255, 255); } [paint]{ clearAll(); for(int i = 0; i < p.length; i ++){ col = Color.getHSBColor((float)(hCol.x/100.), (float)(ss[i]/100.), (float)(bb[i]/100.)); setColor(col); fillOval(p[i].x-5, p[i].y-5, 10, 10); } } [interval, 5, 10]{ for(int i = 0; i < p.length; i ++){ dist[i] = 40 + 10 * random(); dire[i] = 2 * Math.PI * random(); } bousou = true; } [interval, 0, 10]{ for(int i = 0; i < p.length; i ++){ dist[i] = 5; } bousou = false; } [always]{ for(int i = 0; i < p.length; i ++){ if(p[i].x < 0 || monitorWidth < p[i].x){ dire[i] = Math.PI - dire[i]; p[i].bound(Math.PI/2., 1.); } if(p[i].y < 0 || monitorHeight < p[i].y){ dire[i] = -dire[i]; p[i].bound(0., 1.); } p[i].push(dist[i], dire[i]); } if(bousou == true){ hdist = hCol.distanceTo(100, 0); hdire = hCol.directionTo(100, 0); hCol.push(hdist/5., hdire); }else{ hdist = hCol.distanceTo(70, 0); hdire = hCol.directionTo(70, 0); hCol.push(hdist/10., hdire); } if(100. < hCol.x)hCol.x = 100.; if(hCol.x < 0.) hCol.x = 0.; }