0

私が解決しようとしている問題は、個々のレンガで構築された窓を中心とするピラミッドを構築することです。コード ブローでは、1 列目に 1 個のレンガ、2 列目に 2 個のレンガ、3 列目に 3 個、ピラミッドのベースに 12 個のレンガがあるはずです。代わりに、画面の中央にレンガが 1 つだけ表示されます。コードを修正するにはどうすればよいですか?

import acm.program.*;
import acm.graphics.*;



public class BrickPyramid extends GraphicsProgram{          

        public void run() {
         /** xBrick, yBrick trying to calculate for the center of the window **/ 

         double xBrick = (getWidth() - BRICK_WIDTH) / 2 ;              
         double yBrick = (getHeight() - BRICK_HEIGHT) /2 ; 

         /** getting the size of the brick by multiplying the brick width by brick height **/ 
         double buildingBrick = BRICK_WIDTH * BRICK_HEIGHT; 

           for (int i = 0 ; i <= 12; i ++ ){
               for (int j = 0; j < BRICKS_IN_BASE; j++){

                   double x = i * buildingBrick; 
                   double y = j * buildingBrick; 


               /* adding the brick with starting point xbrick, ybrick **/
                   GRect brick = new GRect (xBrick, yBrick, BRICK_WIDTH, BRICK_HEIGHT);
                   add(brick);

               } 
           }

    }
private static final int  BRICK_WIDTH = 100;
private static final int  BRICK_HEIGHT = 50;
private static final int BRICKS_IN_BASE = 12;
}
4

2 に答える 2

2

この行を何度も実行して、すべてのブリックを構築します。

GRect brick = new GRect (xBrick, yBrick, BRICK_WIDTH, BRICK_HEIGHT);

ただし、コンストラクターに渡される変数の値を変更することは決してないため、ブリックはすべて同じ場所に描画されます。

ブリックごとにこれらの値を変更する必要があります。i と j を使用してこれらの値を決定することはできますか?

于 2012-11-22T01:01:33.353 に答える
0

まだ答えを探しているかどうかはわかりませんが、このコードは仕事をします:

public class Pyramid extends GraphicsProgram {

private static final int BRICK_WIDTH = 30;

private static final int BRICK_HEIGHT = 12;

public void run() {

    double xBrick = (getWidth() - BRICK_WIDTH) / 2 ;              
    double yBrick = (getHeight() - BRICK_HEIGHT) /2 ; 

    for (int n=1;n<15;n++){
       for (int m=0;m<=n-1;m++){

        GRect Brick =new GRect(xBrick-(BRICK_WIDTH*(n-1))/2+m*BRICK_WIDTH,yBrick+BRICK_HEIGHT*(n-1),BRICK_WIDTH,BRICK_HEIGHT);
        add(Brick);

        }
      }
}

}

于 2014-11-24T08:51:03.217 に答える