我正在用Java制作游戏。我希望能够检查以前是否访问过某个级别。 我想出了这个:
public class LevelTracker {
boolean depth1visited = false;
boolean depth2visited = false;
// ..
boolean depth100visited = false;
private boolean LevelTracking() {
if (Dungeon.depth == 1) {
depth1visited = true;
}
if (Dungeon.depth == 2) {
depth2visited = true;
}
// ..
if (Dungeon.depth == 100) {
depth100visited = true;
}
}
}
在我的情况下,必须独立检查每个深度,因为任何级别都可以从任何其他级别访问。所以这个:
if (depth > deepestdepth) {
deepestdepth = depth;
}
在我的情况下不起作用。除非我错了,这是可能的。我可以告诉你,这是一个新手。
有什么更好的方法可以做到这一点?在这种情况下可以使用for循环吗?
答案 0 :(得分:1)
使用可以通过索引寻址的数组。这可以替换您的所有if
和100个单独的变量。
boolean[] depthVisited = new boolean[100]; // default values: false
然后你可以通过计算索引来访问数组。
depthVisited[Dungeon.depth - 1] = true; // 0-based index
不需要for
循环。