#03:移動(ループ)
このチャプターでは、描画した図形の移動方法について学習します。
新・Java入門編8: new演算子を学習しよう
https://paiza.jp/works/java/new-primer/java-new-primer-8
新・Java入門編22: クラスについて学習しよう
https://paiza.jp/works/java/new-primer/java-new-primer-22
新・Java入門編24: オブジェクト指向について学習しよう(継承・ポリモーフィズム)
https://paiza.jp/works/java/new-primer/java-new-primer-24
新・Java入門編31: クラスについてもっと学習しよう
ネストされたクラス(Nested Classes)
https://paiza.jp/works/java/new-primer/java-new-primer-31/94006
新・Java入門編31: クラスについてもっと学習しよう
内部クラス(Inner Classes)
https://paiza.jp/works/java/new-primer/java-new-primer-31/94007
新・Java入門編31: クラスについてもっと学習しよう
ローカルクラス(Local Classes)
https://paiza.jp/works/java/new-primer/java-new-primer-31/94008
新・Java入門編31: クラスについてもっと学習しよう
匿名クラス(Anonymous Classes)
https://paiza.jp/works/java/new-primer/java-new-primer-31/94009
新・Java入門編31: クラスについてもっと学習しよう
スタティックネステッドクラス(Static Nested Classes)
https://paiza.jp/works/java/new-primer/java-new-primer-31/94010
void setup() {
  size(700, 700);
  colorMode(HSB, 360, 100, 100);
  background(0, 0, 100);
}
void draw() {
  background(0, 0, 100);
}class Circle {
  float x;
  float y;
  float extent;
  float h;  
  Circle(float x, float y, float extent) {
    this.x = x;
    this.y = y;
    this.extent = extent;
    this.h = random(360);
  }
  void draw() {
    noStroke();
    fill(this.h, 100, 100, 100);
    circle(this.x, this.y, this.extent);
  }
}
Circle c1;
Circle c2;
int w = 700;
int h = 700;
float extent = 50;
void settings() {
  size(w, h);
}
void setup() {
  colorMode(HSB, 360, 100, 100);
  background(0, 0, 100);
  c1 = new Circle(-extent / 2, h / 2, extent);
  c2 = new Circle(w / 2, -extent / 2, extent);
}
void draw() {
  background(0, 0, 100);
  c1.moveX();
  c2.moveY();
  if (c1.isOutsideX(w)) {
    c1 = new Circle(-extent / 2, h / 2, extent);
  }
  if (c2.isOutsideY(h)) {
    c2 = new Circle(w / 2, -extent / 2, extent);
  }
  c1.draw();
  c2.draw();
}class Circle {
  float x;
  float y;
  float extent;  
  float h;  
  
  Circle(float x, float y, float extent) {
    this.x = x;
    this.y = y;
    this.extent = extent;
    this.h = random(360);
  }
  
  void moveX() {
    this.x += 1;
  }
  
  void moveY() {
    this.y += 1;
  }
  
  boolean isOutsideX(float w) {
    return this.x >= w + (this.extent / 2);
  }
  boolean isOutsideY(float w) {
    return this.y >= w + (this.extent / 2);
  }
  
  void draw() {
    noStroke();
    fill(this.h, 100, 100, 100);
    circle(this.x, this.y, this.extent);
  }
}