//5秒に1回 int num = 300; point[] p; double[] pp; [setup, 600, 600]{ p = new point[num]; pp = new double[num]; for(int i = 0; i < p.length; ++i){ p[i] = new point(random()*monitorWidth, -random()*monitorHeight); pp[i] = random()*20.; } } [paint]{ setColor(0, 0, 0); fillRect(0, 0, monitorWidth, monitorHeight); setColor(255, 255, 255); for(int i = 2; i < p.length; ++i){ fillRect(p[i].x-1, p[i].y-2, 2, 4); } setColor(32, 32, 32); drawOval(mouseX-80, mouseY-80, 160, 160); } [always]{ for(int i = 0; i < p.length; ++i){ p[i].push(pp[i], Math.PI/2.); double dist = p[i].distanceTo(mouseX, mouseY); if(dist < 80){ dist = 80-dist; double dire = p[i].directionTo(mouseX, mouseY)+Math.PI; p[i].push(dist*1.5, dire); } if(p[i].y > monitorHeight){ p[i].x = random()*monitorWidth; p[i].y = 0; } } }