在我的教科書中,我很難理解這個例子的概念。這個想法是用紅色,黃色和綠色的燈光畫一個紅綠燈。我有一些問題。我無法弄清楚代碼的哪部分做了什麼。用紅色,黃色和綠色指示燈繪製紅綠燈的代碼是如何工作的?
- 我有權利承擔
cx
和cy
是找出頁面的中心嗎? - 是
fx
和fy
找出框架的中心? - 我不知道
dy
是幹什麼的,爲什麼它除以4而不是3爲3燈,LAMP_RADIUS
完全讓我感到困惑。 - 對於紅色,黃色和綠色的所有三個
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;
}
感謝你們兩位。 –