【发布时间】:2013-05-24 14:19:58
【问题描述】:
我是 Java 新手,在我正在创建的游戏中遇到数组问题,这与 Bejeweled 类似。
在这个游戏中,我有一个名为 Tile 的类,它代表棋盘上的一个彩色棋子,以及棋盘上的列和行(整数)。我有另一个用于棋盘的类,称为 Board,它在一个二维整数数组中管理这些图块,按列和行组织。
我的问题是我在屏幕上交换了两个图块。发生这种情况时,它们的列和行被交换,但保存它们的数组无法识别这种变化。在屏幕上,一切看起来都很好。两个图块将交换位置。
例如,如果我想要切换两个相邻的图块,分别位于 (column0, row0) 和 (column1, row0)。在我的磁贴数组中,这些磁贴是array[0][0] 和array[1][0]。当我切换它们时,第一个图块现在位于第二个图块的旧位置,第二个图块现在位于第一个图块的旧位置。但是,第一个图块仍被识别为 array[0][0],即使它现在应该是 array[1][0]。
这样做的意义是我的程序不会识别三个连续的相同颜色的瓷砖,因此它不会将它们从板上清除。 有什么办法可以解决这个问题吗?
如果您有任何建议,那就太好了。谢谢。
【问题讨论】:
-
您能发布执行交换的代码段吗?交换的一个常见错误是 a = b; b = 一个;但这实际上会将两个变量都分配给 b 的旧值。您需要一个临时位置来保存 a 的旧值: tmp = a; a = b; b = tmp.
-
是的,我有用于切换列和行的占位符。我认为这就是为什么它仍然正确地绘制在屏幕上的原因。好主意
-
你会交换数组元素吗?数组不会自动注意到您更改 Tile 内的坐标...听起来您仍然需要执行 tmp = array[c0][r0];数组[c0][r0] = 数组[c1][r1];数组[c1][r1] = tmp
-
好的,我试试。谢谢
-
你如何识别女巫瓷砖在阵列中的女巫位置?