0

我对 Java 还很陌生,在我正在创建的游戏中遇到数组问题,这与 Bejeweled 类似。

在这个游戏中,我有一个名为 Tile 的类,它代表棋盘上的一个彩色棋子,以及棋盘上的列和行(整数)。我有另一个用于棋盘的类,称为棋盘,它在按列和行组织的 2D 整数数组中管理这些图块。

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

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

这样做的意义在于,我的程序将无法识别三个连续的具有相同颜色的瓷砖,因此它不会将它们从板上清除。我能做些什么来解决这个问题吗?

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

4

1 回答 1

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;
  }
}
于 2013-05-24T06:08:41.383 回答