我对Java很新,我在创建的游戏中遇到阵列问题,这类似于宝石迷阵。
在这个游戏中,我有一个名为Tile的类,它代表板上的一个彩色瓷砖,以及电路板上的列和行(整数)。我有一个名为Board的另一个类,它按照列和行组织的2D整数数组管理这些图块。
出现问题我在屏幕上交换了两个图块。发生这种情况时,它们的列和行将被交换,但保存它们的数组无法识别此更改。在屏幕上,一切看起来都很好。两个瓷砖将切换位置。
例如,如果我要切换两个相邻的切片,请(column0, row0)
和(column1, row0)
。在我的图块数组中,这些是图块array[0][0]
和array[1][0]
。当我切换它们时,第一个图块现在位于第二个图块的旧位置,第二个图块现在位于第一个图块的旧位置。但是,第一个图块仍然会被识别为array[0][0]
,即使它现在应该是array[1][0]
。
这意味着我的程序将无法识别具有相同颜色的三个连续图块,因此它不会从电路板上清除它们。 我能做些什么来解决这个问题吗?
如果您有任何建议,那就太棒了。谢谢。
答案 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;
}
}