运行moveRight()函数时出现错误,它不识别map [x] [y],说这是未定义的。只有当“玩家”处于最后一个y循环时才会发生这种情况。我不明白为什么会发生这种情况,有人可以帮忙解释一下吗?嵌套循环存在问题
var map = [
["Blank", "Blank", "Blank", "Blank"],
["Blank", "Blank", "Blank", "Blank"],
["Blank", "Blank", "Blank", "Blank"],
["Blank", "Player", "Blank", "Blank"],
["Blank", "Blank", "Blank", "Blank"],
["Blank", "Blank", "Blank", "Blank"],
["Blank", "Blank", "Blank", "Blank"]
];
function moveRight() {
var breakLoop = false;
for (y = 0; y < map.length; y++) {
for (x = 0; x < map[y].length; x++) {
var posX = map[x][y].indexOf("Player");
if (posX <= -1) continue;
if (y >= map[y].length-1) {
breakLoop = true;
break;
}
breakLoop = true;
console.log("x: " + x);
console.log("y: " + y);
map[x][y] = "Blank";
map[x][y+1] = "Player";
break;
}
if (breakLoop) break;
}
}
当你想声明一个变量(比如'y'或'x')时,你应该在它前面放一个'var'。你的'y'和'x'正在泄漏到全球范围内。 – thejh