编写一个绘制金字塔组成的GraphicsProgram子类 砖排列成水平排,这样的数量 当你向上移动金字塔时,每行中的砖块减少一个
这是我的代码:
import acm.graphics.GRect;
import acm.program.GraphicsProgram;
public class Pyramid extends GraphicsProgram {
public void run() {
int BRICK_WIDTH = 30;
int BRICK_HEIGHT = 12;
int BRICKS_IN_BASE = 20;
for (int i = 1; i <= BRICKS_IN_BASE; i++) {
for (int j = 1; j <= i; j++) {
add(new GRect(this.getCanvasWidth() / 16 + (BRICK_HEIGHT * i)
+ BRICK_WIDTH + (BRICK_WIDTH * (BRICKS_IN_BASE - j)),
BRICK_HEIGHT * i, BRICK_WIDTH, BRICK_HEIGHT));
}
}
}
}
如果BRICK_WIDTH为30且BRICK_HEIGHT为12,则金字塔未完全对齐, 但如果brick_width为30且brick_height为15,则完全对齐。
如果BRICK_WIDTH为30且BRICK_HEIGHT为12 ,则为金字塔的屏幕截图 这是金字塔的截图,如果BRICK_WIDTH为30且BRICK_HEIGHT为15
答案 0 :(得分:0)
使用BRICK_HEIGHT确定GRect的x坐标听起来不合逻辑。
您需要更改行
add(new GRect(this.getCanvasWidth() / 16 + (BRICK_HEIGHT * i)
要
add(new GRect(this.getCanvasWidth() / 16 + (BRICK_WIDTH / 2 * i)
如果BRICK_HEIGHT
等于15而BRICK_WIDTH
为30则有效,因为BRICK_HEIGHT * i == (BRICK_WIDHT / 2 * i)
。
但一般情况下,您希望绘制当前线的基本x坐标基于砖块的宽度,而不是基于高度。