-1

ライブラリを使用して ATARI BREAKOUT を作成していacm.graphicsますが、for ループの外側にある「ブリック」にアクセスして削除しようとしています。for ループなしでブリックを作成する他の方法がわかりません。ヘルプ?

GRect brick = new GRect(brickwidth, brickheight);
    for(j = 1; j <= nrows; j++) { 
        for(i = 0; i < bricksperrow; i++) {
            brick.setLocation(i*(brickwidth + brickSep) + 1, brickoffset + j*(brickheight + brickSep));
            if(j == 1 || j == 2) {
                brick.setColor(Color.RED);
                brick.setFilled(true);
            }
            else if(j == 3 || j == 4) {
                brick.setColor(Color.ORANGE);
                brick.setFilled(true);
            }
            else if(j == 5 || j == 6) {
                brick.setColor(Color.YELLOW);
                brick.setFilled(true);
            }
            else if(j == 7 || j == 8) {
                brick.setColor(Color.GREEN);
                brick.setFilled(true);
            }
            else if(j == 9 || j == 10) {
                brick.setColor(Color.CYAN);
                brick.setFilled(true);
            }
            add(brick);
        }
    }
4

1 に答える 1

0

forループで多くのブリックを作成したいと思います。

反復ごとに、1 つのレンガの位置を変更するだけです。反復ごとに新しいブリックを作成し、その参照を何らかの構造、できれば [nrows, bricksperrow] 次元のマトリックスに保存する必要があります。

方法は次のとおりです。

GRect[][] bricks = new GRect[nrows][bricksperrow];
for(j = 1; j <= nrows; j++) { 
    for(i = 0; i < bricksperrow; i++) {
        bricks[j - 1][i].setLocation(
                      i*(brickwidth + brickSep) + 1, 
                      brickoffset + j*(brickheight + brickSep));
        if(j == 1 || j == 2) {
            brick.setColor(Color.RED);
            brick.setFilled(true);
        }
        else if(j == 3 || j == 4) {
            brick.setColor(Color.ORANGE);
            brick.setFilled(true);
        }
        else if(j == 5 || j == 6) {
            brick.setColor(Color.YELLOW);
            brick.setFilled(true);
        }
        else if(j == 7 || j == 8) {
            brick.setColor(Color.GREEN);
            brick.setFilled(true);
        }
        else if(j == 9 || j == 10) {
            brick.setColor(Color.CYAN);
            brick.setFilled(true);
        }
        add(bricks[j - 1][i]);
    }
}

このようにして、任意のエントリを削除できるブロックのグローバル マトリックスを作成できます。

于 2016-01-01T18:48:52.477 に答える