教科書でこの例の概念を理解するのに苦労しています。アイデアは、赤、黄、緑のライトで信号機を描くことです。いくつか質問があります。コードのどの部分が何をするのか理解するのに苦労しています。
- 私はページの中心を想定
cx
しcy
て理解する権利がありますか? fx
フレームの中心をfy
把握するのですか?- 何が起こっているのか
dy
、なぜそれが3つのライトに対して3ではなく4で割られているのかわかりませんが、LAMP_RADIUS
完全に混乱しています。 - 赤、黄、緑の3つすべて
add(createFilledCircle)
で、信号機のフレーム内でそれらの位置がどのように計算されるのかわかりません。 - 方法
createFilledCircle()
ではわかりませんGOval circle = newGOval(x-r, y-r, 2 * r, 2 * r);
。x-r
私はそれが何をし、何をy-r
し、それがどのようにポジションに関係するのか理解していません。
import acm. graphics.*;
import acm. program.*;
import java.awt.*;
public class DrawStoplight extends GraphicsProgram {
public void run () {
double cx = getWidth() / 2;
double cy = getHeight() / 2;
double fx = cx - FRAME_WIDTH / 2;
double fy = cy- FRAME_HEIGHT / 2;
double dy = FRAME_HEIGHT / 4 + LAMP_RADIUS / 2;
GRect frame = new GRect(fx, fy, FRAME_WIDTH, FRAME_HEIGHT);
frame.setFilled(true);
frame.setColor(Color.GRAY);
add(frame);
add(createFilledCircle(cx, cy - dy, LAMP_RADIUS, Color.RED));
add(createFilledCircle(cx, cy, LAMP_RADIUS, Color.YELLOW));
add(createFilledCircle(cx, cy + dy, LAMP_RADIUS, Color.GREEN));
}
private GOval createFilledCircle(double x, double y, double r, Color color){
GOval circle = new GOval(x-r, y-r, 2 * r, 2 * r)
circle.setColor(color);
circle.setFilled(true);
return circle;
}
private static final double FRAME_WIDTH = 50;
private static final double FRAME_HEIGHT = 100;
private static final double LAMP_RADIUS = 10;
}