无法使瓷砖交换位置 - 宝石迷阵

时间:2013-05-24 05:44:39

标签: java arrays

我对Java很新,我在创建的游戏中遇到阵列问题,这类似于宝石迷阵。

在这个游戏中,我有一个名为Tile的类,它代表板上的一个彩色瓷砖,以及电路板上的列和行(整数)。我有一个名为Board的另一个类,它按照列和行组织的2D整数数组管理这些图块。

出现问题我在屏幕上交换了两个图块。发生这种情况时,它们的列和行将被交换,但保存它们的数组无法识别此更改。在屏幕上,一切看起来都很好。两个瓷砖将切换位置。

例如,如果我要切换两个相邻的切片,请(column0, row0)(column1, row0)。在我的图块数组中,这些是图块array[0][0]array[1][0]。当我切换它们时,第一个图块现在位于第二个图块的旧位置,第二个图块现在位于第一个图块的旧位置。但是,第一个图块仍然会被识别为array[0][0],即使它现在应该是array[1][0]

这意味着我的程序将无法识别具有相同颜色的三个连续图块,因此它不会从电路板上清除它们。 我能做些什么来解决这个问题吗?

如果您有任何建议,那就太棒了。谢谢。

1 个答案:

答案 0 :(得分:1)

不确定您的说明究竟出了什么问题。代码看起来应该类似于:

class Tile {
  int col;
  int row;
  void setPos(int newCol, int newRow) {
    col = newCol;
    row = newRow;
}

class Board {
  Tile[][] array;

  void swap(int col0, int row0, int col1, int row1) {
    // Get hold of the tile objects to swap
    Tile tile0 = array[col0][row0];
    Tile tile1 = array[col1][row1];

    // Swap the positions stored in the tile objects
    tile0.setPos(col1, row1);
    tile1.setPos(col0, row0); 

    // Swap the tile objects in the array
    array[col0][row0] = tile1;
    array[col1][row1] = tile0;
  }
}