0

我正在编写一个代码,它根据原始颜色将数组单元格的颜色更改为黑色或白色。如果单元格为白色,则变为黑色,反之亦然。我正在使用以下代码:

public class Grid {

    boolean[][] grid;
    private int Height;
    private int Width;
    public White;
    public Black;


    public Grid(int height, int width) {

        Height = height;
        Width = width;

    }

    public int getHeight() {

        return Height;
    }

    public int getWidth() {

        return Width;
    }

    public boolean isWhite(int i, int j) {
        boolean [][] Grid = new boolean [Height][Width];
        for ( i = 0; i<Height ; i++);{
            for (j = 0; j<Width ; j++){
                if (Grid[i][j] ?? //iswhite) {
                    ??//setBlack
                }
                else (??)//setWhite

            }
        }

    }}

    protected void setWhite(int i, int j) {
        ??
    }

    protected void setBlack(int i, int j) {
        ??
    }
}

我相信我应该根据布尔值为 Grid[i][j] 创建一个实例,但是我不确定如何将“public boolean isWhite”与“setWhite”和“setBlack”联系起来。我应该怎么做?

4

2 回答 2

0

1)您可能应该在构造函数中初始化您的数组。由于它是一个基元数组,因此在每个位置都默认为 false。如果这不是您想要的,请根据需要设置为 true。

2) isWhite,从名称来看,应该只返回给定索引处的值。

3)对于set方法,假设false == black,只要根据你想要的白色还是黑色,将相应位置的值设置为true或false即可。

于 2013-04-18T14:35:54.060 回答
0

您已经定义boolean grid[][]为类变量。您需要在构造函数中使用类似于grid = new boolean[height][width];我建议初始化所有值的内容来设置它,只是为了保持理智。(即,将它们全部设置为 true 或 false 或一些预定义的模式。)一旦你这样做了,你可以检查grid[i][j]它的值,它可以是 true 或 false。(无论您希望代表黑色和白色。)

例如,您的 isWhite 函数就这么简单(假设 white == true)

public boolean isWhite(int i, int j) {
        return grid[i][j];
}

同样,集合函数也相对最小:

void setWhite(int i, int j) {
    grid[i][j] = true;
}

void setBlack(int i, int j) {
    grid[i][j] = false;
}

附加:您可能希望创建一些在翻转颜色时执行适当操作的代码,而不是将其放在 isWhite 函数中。(它应该是测试颜色,而不是改变值,对吧?)

void changeColorAtYX(int y, int x){
    if(isWhite(y, x)){
        setBlack(y, x);
    } else {
        setWhite(y,x);
    }
}
于 2013-04-18T14:46:48.343 回答