我正在解决一个我遇到很多麻烦的问题。问题的概念是用砖块建造金字塔。整个金字塔的砖块都集中在窗户的中央。我可以画一块砖,然后是两块,然后是三块,一直到 12 块,它构成了金字塔的底部,但是所有的砖都在窗口左侧的左边缘对齐,而不是在窗口的中心。
使用 getWidth() 和 getHeight() 我可以做到 (getWidth()-BRICK_WIDTH) / 2; 获得砖块 x 坐标的中心。然后 (getHeight() -BRICK_HEIGHT) / 2; 为一块砖的 y 坐标的中心。唯一的问题是我不知道在哪里输入该代码,因此它适用于所有砖块,因此每排砖块都位于窗口的中心。
import acm.program.*;
import acm.graphics.*;
public class Pyramid extends GraphicsProgram {
public void run() {
double xCoordinate = (getWidth() - BRICKWIDTH) / 2;
double yCoordinate = (getHeight() - BRICK_HEIGHT / 2);
for (int i = 0; i < BRICKS_IN_BASE; i++) {
for (int j = 0; j < i; j++) {
double x = j * BRICK_WIDTH;
double y = i * BRICK_HEIGHT;
GRect square = new GRect(x, y, BRICK_WIDTH, BRICK_HEIGHT);
add(square);
}
}
}
private static final int BRICK_WIDTH = 50;
private static final int BRICK_HEIGHT = 25;
private static final int BRICKS_IN_BASE = 12;
}