내 텍스트 북에서이 예제의 개념을 파악하는 데 많은 어려움을 겪고 있습니다. 아이디어는 빨강, 노랑 및 녹색 불빛과 함께 신호등을 그립니다. 나는 몇 가지 질문이있다. 코드의 일부가 무엇인지 알아내는 데 문제가 있습니다.빨강, 노랑 및 녹색 표시등이있는 신호등을 그리는 코드는 어떻게 작동합니까?
cx
및cy
페이지의 중심을 파악하는 것이 맞습니까?- 프레임의 중심을 알아 내기 위해
fx
과fy
이 있습니까? - 무엇이
dy
인지 모르겠으며 왜 3 등으로 3이 아닌 4로 나뉘며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;
}
두 분 모두에게 감사드립니다. 설명을 주신 덕분에 –