【发布时间】:2018-06-06 00:31:07
【问题描述】:
我正在尝试弄清楚如何为小型迷宫游戏获取撤消功能。首先,我通过检查最后一个方向是什么,然后朝相反的方向返回,找到了一种方法来做到这一点。但是这段代码太长了,因为我还必须追踪可能的物品拾取或隐藏的墙等。
代码的背景信息:我使用String[][] 来存储迷宫,因为这是最简单的。我使用Arraylist<String[][]> 来存储所有字符串。
在玩家执行每一步后,我将String[][] 数组保存到数组列表中。当玩家说撤消时,我查看数组列表中倒数第二个String[][] 并希望将String[][] 设置回此值。但是 currentPos 似乎永远不会更新。我不确定问题出在哪里。
if (direction.equals("north")) {
if (currentPos[i - 1][j].equals("---")) {
continue;
} else {
currentPos[i][j] = " ";
currentPos[i - 2][j] = "P";
break;
}
}
if (direction.equals("undo")) {
currentPos = history.get(history.size()-2);
history.remove(history.size()-1);
break;
}
【问题讨论】:
-
您有问题吗?
-
您是否在调试器中单步执行了代码?
-
为什么它不起作用,我该如何让它起作用?在我看来,这应该确保 currentPos 又是以前的样子,但事实并非如此。
-
我确实在很多地方添加了打印功能。没有通过真正的调试器。印刷品基本上是一样的。
-
我们几乎不可能为您调试此问题:历史记录是否正确保存?它是否曾经到达 .equals("undo") if 语句?
标签: java arrays string arraylist undo