processingが面白そうだなぁと思ってました。ほぼJavaなんですね。なるほど。ただ、ちょっと予約語(?)が多いかなぁという気もする。たとえばwidthとかheightとか…色が変わるから分かるけどね。
書いたものがすぐに絵になって、JavaアプレットだけどWebにも乗せられるってのはまあ、楽しいかもしれませんね。
実際に試しに作ってみた最初のsketchをどうぞ。マウスカーソルに当たるとグレーになって弾が止まります。
(IEだと動かないですね…)
ソースは以下の通り。
int N=150; bullet[] bl = new bullet[N]; int w=640; int h=480; void setup(){ size(w, h); background(0,0,0); noStroke(); for(int i=0; i<N; i++){ bl[i]=new bullet(w/2,h/2,10); float x=sin(TWO_PI/N*i); float y=cos(TWO_PI/N*i); bl[i].setdir(x,y); } // smooth(); } void draw(){ background(0); for(int i=0;i<N;i++){ bl[i].move(); bl[i].check_hit(); bl[i].display(); } } class bullet{ float sz; float x,y; float dx,dy; boolean bound=true; boolean stop=false; bullet(float init_x, float init_y, float init_sz){ sz=init_sz; x=init_x; y=init_y; } void display(){ if(stop){ fill(102); }else{ fill(255); } ellipse(x,y,sz,sz); } void setdir(float ndx, float ndy){ dx=ndx; dy=ndy; } void move(){ if(stop) return; x+=dx; y+=dy; if(bound){ if(x<0 || x>width){ dx*=-1; } if(y<0 || y>height){ dy*=-1; } } } void check_hit(){ if(abs(x-mouseX)<sz/2 && abs(y-mouseY)<sz/2){ stop=true; } } }