初期座標、速さ、長さ、ジグザグの長さをすべて決めるプログラム
Q&A
タイトルに書いたように、
以下2つのプログラム
①初期座標、速さ、長さ
②初期座標、ジグザグの長さ、長さ
を組み合わせて、初期座標、速さ、長さ、ジグザグの長さをすべて決めるプログラムを作成できるのでは、と思ったのですが、どうしたらいいのかがわかりません。
①
public class TurtleTriangleX extends TurtleRemoCon {
private int speed, length;
private int movedLength; // これまで動いた距離
/** tが (x0, y0) から, speedの速さで移動し,1辺の長さがlenの三角形を描く */
public TurtleTriangleX(Turtle t, int x0, int y0, int speed, int len) {
super(t);
this.speed = speed;
this.length = len;
movedLength = 0;
t.move(x0, y0);
t.penDown();
}
/** 1ステップ描く */
public void step() {
// speed分だけ進める
t.go(speed);
// これまで動いた長さにspeedを足す
movedLength += speed;
// 一辺の長さ(length)以上動いてたら,向きを変える
if (movedLength >= length) {
t.rotate(240);
movedLength = 0; // リセット
}
}
/** テスト用mainメソッド */
public static void main(String[] args) {
Turtle t1 = new Turtle();
TurtleTriangleX tri1 = new TurtleTriangleX(t1, 100, 200, 10, 30);
Turtle t2 = new Turtle();
t2.setColor(java.awt.Color.GREEN);
TurtleTriangleX tri2 = new TurtleTriangleX(t2, 50, 240, 30, 100);
while (true) {
tri1.step();
tri2.step();
}
}
}
②
public class ZigZagTurtle extends Turtle {
protected int zzlen,speed,length,movedLength;
protected java.awt.Color zigColor = java.awt.Color.RED;
protected java.awt.Color zagColor = java.awt.Color.BLUE;
public ZigZagTurtle() {
super();
zzlen = 10; // デフォルトの刻み幅
}
/** ジグザグの長さを設定してオブジェクトを作る */
public ZigZagTurtle(int zzlen) {
super();
this.zzlen = zzlen;
}
/** ジグザグの長さを設定する */
public void setZZLength(int zzlen) {
this.zzlen = zzlen;
}
/** ジグの色を設定する */
public void setZigColor(java.awt.Color c) {
zigColor = c;
}
/** ザグの色を設定する */
public void setZagColor(java.awt.Color c) {
zagColor = c;
}
/** ジグザグに長さlengthだけ進む */
public void go(int length) {
rotate(60);
while (true) {
zig();
// この時点で本来の進行方向の直線上にいる
length -= zzlen; // 真っ直ぐ進んだ距離を引く
if (length <= 0) { // 本来の進行方向にlength進んだら
rotate(60); // 本来の向きに戻す
break;
}
zag();
// この時点で本来の進行方向の直線上にいる
length -= zzlen; // 真っ直ぐ進んだ距離を引く
if (length<=0) { // 本来の進行方向にlength進んだら
rotate(-60); // 本来の向きに戻す
break;
}
}
}
/** ジグザグのジグを描く */
protected void zig() {
setColor(zigColor);
super.go(zzlen);
rotate(-120);
super.go(zzlen);
}
/** ジグザグのザグを描く */
protected void zag() {
setColor(zagColor);
super.go(zzlen);
rotate(120);
super.go(zzlen);
}
/** テスト用のmainメソッド */
public static void main(String[] args) {
ZigZagTurtle zzt = new ZigZagTurtle();
// 三角形を描く
zzt.move(75,200);
zzt.penDown();
// ジグザクの色を変える
while(true){
zzt.setZZLength(6);
zzt.setZigColor(java.awt.Color.PINK); // シアン
zzt.setZagColor(java.awt.Color.CYAN); // ピンク
zzt.go(72);
zzt.rotate(240);
}
}
}
どうしたらいいのですか。もしお分かりいただけるのであれば、ご指摘よろしくお願いします。
(ちなみに、今回書きたいプログラムは、ジグザグの長さが6、長さ72、速さ24、初期座標(75,200)のプログラムです。)
0