在array2D java中交换元素

时间:2016-06-07 11:08:55

标签: java

我正在制作游戏。对象属于这个游戏。我打算做这个"跌倒"通过交换2D数组中的元素来实现。每个元素都是一个保持颜色的对象。

我搜索所有元素。

code in here

它应该交换。

我不明白我做错了什么。

如果我错了,请纠正我,但不是这样交换吗?

var namespace = {
    one: function (args) {
       // Do something
       return this;
    },
    two: function () {
       // Do something
       return this;
    }
}

2 个答案:

答案 0 :(得分:0)

我会在您的代码中发布相关部分并在其上回答

        Int x = currentTile.getX()/50;
        int y = (currentTile.getY()+1)/50;

        CellPane botTile = board[x][y];
        if (botTile.getBackground().equals(Color.BLACK)){
            board[x][y].setBackground(currentTile.getBackground());
            board[currentTile.getX()/50][currentTile.getY()/50].setBackground(botTile.getBackground());
        }

botTile持有与board [x] [y]相同的对象(板块)的引用。检查botTile的颜色,并将其替换为currentTile上的颜色。这意味着botTile和board [x] [y]引用的对象现在都有了新的颜色。这意味着旧颜色已丢失,因为您没有将其保存在另一个变量中。你应该做这样的事情

        CellPane botTile = board[x][y];          
        if (botTile.getBackground().equals(Color.BLACK)){
            Color oldColor = botTile.getBackground; 
            board[x][y].setBackground(currentTile.getBackground());
            board[currentTile.getX()/50][currentTile.getY()/50].setBackground(oldColor);
        }

答案 1 :(得分:0)

由于您将值除以50,y值将不会递增,除非值为50,100等等...... 如下所示分配y:

int y = 1 + currentTile.getY()/50;