私は多くの問題を抱えている問題に取り組んでいます。問題のコンセプトは、レンガを使ってピラミッドを作ることです。レンガのピラミッド全体が窓の中央に配置されています。レンガを 1 つ、次に 2 つ、次に 3 つまで、ピラミッドの底部を構成する 12 まで描画できますが、すべてのレンガはウィンドウの中央に配置されるのではなく、ウィンドウの左側の左端に配置されます。
getWidth() と getHeight() を使用すると、 (getWidth()-BRICK_WIDTH) / 2; を実行できます。ブリックの x 座標の中心を取得します。そして (getHeight() -BRICK_HEIGHT) / 2; 1 つのレンガの 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;
}