program switcher

processingで例えばvjする時とか、どうやって切り換えするかなって疑問は前からあって、やっとその答えが出た。
abstractmachine >> Polymorphism
abstractmachine >> abstract classes

ポリモーフィズムね、抽象クラスね。やったやった。でも使い方全然わかってなかった。本当こういうテクニックって、できる人にとっては言うまでもないことで、僕くらいの知識だと思いつかないからなかなか共有されないんだよね。ここで駄目なやり方として紹介されてるswitch文で書いてた。

Polymorphismのはdouglasのページのをそのまま実行すればいいとして、abstract classesでのやつをやってみた。これでいいのかな。確かに変数のことで悩まなくて済むしコードも綺麗だ。Head First Javaで勉強し直そう...。

abstract class Animation {
  void setup() {
    background(255);
  }
  
  abstract void draw();
}

class Opening extends Animation {
  int i=0;
  void draw() {
    background(255);
    if(i>width) {
      i=0;
    }
    line(i, 0, i, height);
    i++;
  }
}

class Middle extends Animation {
  int i=0;
  void draw() {
    background(255);
    if(i>height) {
      i=0;
    }
    line(0, i, width, i);
    i++;
  }
}

class Ending extends Animation {
  void draw() {
    background(random(255));  
  }
}

Animation myAnimation;
void setup() {
  myAnimation = new Opening();
}

void draw() {
  myAnimation.draw();
}

void keyPressed() {
  switch(key) {
    case 'a':
      myAnimation = new Opening();
      break;
    case 'b':
      myAnimation = new Middle();
      break;
    case 'c':
      myAnimation = new Ending();
      break;
  } 
}