not good but great

プログラミング、アート、映画・本の感想について書きます。

Processingでオブジェクト指向を実践する

f:id:naoyashiga:20140506195907p:plain

クラス宣言

class Circle{
  float x,y;
  float radius;
  color lineCol,fillCol;
  float alpha;
  
  Circle(){
    x = random(width);
    y = random(height);
    radius = random(100) + 10;
    
    lineCol = color(random(255),random(255),random(255));
    fillCol = color(random(255),random(255),random(255));
    alpha = random(255);
  }
  
  void drawMe(){
    noStroke();
    fill(fillCol,alpha);
    ellipse(x,y,radius * 2,radius * 2);
    stroke(lineCol,150);
    noFill();
    ellipse(x,y,10,10);
  }
}

返り値なしの関数はコンストラクタとして解釈されるみたいです。drawMeはvoidを指定してあるので、関数として登録されます。colorという型もあるようです。色を入れるための型だと思います。

インスタンス生成

void drawCircles(){
  for(int i = 0;i < _num;i++){
    Circle thisCirc = new Circle();
    thisCirc.drawMe();
  }
}

インスタンスを作るためにnewするというおなじみの流れです。このあたりは共通している言語が多いので、プログラミング経験者の方はとっつきやすいと思います。

マウスを離したら実行

void mouseReleased(){
  drawCircles();
}

mouseReleasedはProcessingに用意されている関数です。

https://processing.org/reference/mouseReleased_.html

円を動かす


draw関数の中で座標を動かすと、円が動くようになります。コードは省略します。