processingおもしろいかも

processingが面白そうだなぁと思ってました。ほぼJavaなんですね。なるほど。ただ、ちょっと予約語(?)が多いかなぁという気もする。たとえばwidthとかheightとか…色が変わるから分かるけどね。

書いたものがすぐに絵になって、JavaアプレットだけどWebにも乗せられるってのはまあ、楽しいかもしれませんね。

実際に試しに作ってみた最初のsketchをどうぞ。マウスカーソルに当たるとグレーになって弾が止まります。

(IEだと動かないですね…)


This browser does not have a Java Plug-in.

Get the latest Java Plug-in here.

ソースは以下の通り。

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;
    }
  }
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です