processing

MRect rec1, rec2, rec3, rec4;

void setup(){
 size(640, 360);
 fill(255,204);
 noStroke();
 rec1 = new MRect(5, 200.0, 0.922, 0.1*height, 4.0, 30);
 rec2 = new MRect(1, 20, 0.33, 0.4*height, 12, 100);
 rec3 = new MRect(2, 58.0, 10, 0.3*height, 0.3, 50);
 rec4 = new MRect(1,120.0, 2, 0.9*height,20,50);
}

void draw(){
  background(0);
  
  rec1.display();
  rec2.display();
  rec3.display();
  
  rec1.move(mouseX-(width/2), mouseY+(height*0.1), 30);
  rec2.move((mouseX+(width*0.05))%width, mouseY+(height*0.025), 20);
  rec3.move(mouseX/4, mouseY-(height*0.025), 40);
  rec4.move(mouseX-(width/2), (height-mouseY), 50);}
class MRect{
  int bar_width; //single ber width
  float rec_xposition; 
  float rec_height;
  float rec_yposition;
  float bar_distance; //distance between two bar
  float bar_num; //number of bars
  
  //Constructer
  MRect(int bar_width, float rec_xposition, float rec_height, float rec_yposition, float bar_distance, float bar_num){
    this.bar_width = bar_width;
    this.rec_xposition = rec_xposition;
    this.rec_height = rec_height;
    this.rec_yposition = rec_yposition;
    this.bar_distance = bar_distance;
    this.bar_num = bar_num;
  }
  
  //move rectangles 
  void move (float posX, float posY, float damping) {
    float dif = rec_yposition - posY;
    if (abs(dif) > 1) {
      rec_yposition -= dif/damping;
    }
   
    dif = rec_xposition - posX;
    if (abs(dif) > 1) {
      rec_xposition -= dif/damping;
    
    }
    
  }
  //draw rectangles(roop "bar_num" times) on display
  void display(){
    for(int i=0; i<bar_num; i++){
      rect(rec_xposition+(i*(bar_distance+bar_width)),rec_yposition, bar_width, height*rec_height);
    }
  }
}

プロフィール↓↓
投稿を作成しました 9

コメントを残す

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

関連する投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る