#04:移動(跳ね返り)
このチャプターでは、描画した図形の移動方法について学習します。
新・Java入門編12: 条件分岐を理解しよう
https://paiza.jp/works/java/new-primer/java-new-primer-12
新・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
Circle c1;
int w = 700;
int h = 700;
float extent = 50;
void settings() {
size(w, h);
}
void setup() {
colorMode(HSB, 360, 100, 100);
background(0, 0, 0);
c1 = new Circle(-extent / 2, h / 2, extent);
}
void draw() {
background(0, 0, 100);
c1.moveX();
if (c1.isOutsideX(w)) {
c1 = new Circle(-extent / 2, h / 2, extent);
}
c1.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 h) {
return this.y >= h + (this.extent / 2);
}
void draw() {
noStroke();
fill(this.h, 100, 100, 100);
circle(this.x, this.y, this.extent);
}
}
Circle c1;
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);
}
void draw() {
background(0, 0,100);
c1.moveX();
c1.moveY();
if (c1.checkTouchWallX(w)) {
c1.reverseX();
}
if (c1.checkTouchWallY(h)) {
c1.reverseY();
}
c1.draw();
}class Circle {
float x;
float y;
float extent;
float h;
float deltaX = 1;
float deltaY = 1;
Circle(float x, float y, float extent) {
this.x = x;
this.y = y;
this.extent = extent;
this.h = random(360);
}
void moveX() {
this.x += this.deltaX;
}
void moveY() {
this.y += this.deltaY;
}
boolean isOutsideX(float w) {
return this.x >= w + (this.extent / 2);
}
boolean isOutsideY(float h) {
return this.y >= h + (this.extent / 2);
}
boolean checkTouchWallX(float w) {
return this.x >= w - (this.extent / 2) || this.x <= this.extent / 2;
}
boolean checkTouchWallY(float h) {
return this.y >= h - (this.extent / 2) || this.y <= this.extent / 2;
}
void reverseX() {
this.deltaX = -this.deltaX;
}
void reverseY() {
this.deltaY = -this.deltaY;
}
void draw() {
noStroke();
fill(this.h, 100, 100, 100);
circle(this.x, this.y, this.extent);
}
}