【发布时间】:2013-04-26 05:18:22
【问题描述】:
我相信我的对象文字和数组循环存在问题。 我正在尝试在之前使用数组的“地图”中使用对象文字。我想使用对象文字的原因是因为我想要一个变量来显示它所在位置的名称。截至目前,我总是遇到 loc[2][1] = player; 的问题。
var room0 = [
[blank, blank, blank, blank],
[blank, blank, blank, blank],
[blank, player, blank, doorRight],
[blank, blank, blank, blank]
];
var room1 = [
[blank, blank, blank, blank],
[blank, blank, blank, blank],
[blank, blank, blank, blank],
[blank, blank, blank, blank]
];
var loc = room0;
var map = {
"living room": room0,
"Bedroom": room1,
"Outside": room2
};
function moveRight() {
for (var y = 0; y < loc.length; y++) {
var posX = loc[y].indexOf(player);
if (posX <= -1) continue;
// if going to the next room to the right
if (loc[y][posX+1] == doorRight) {
for (var name in map) {
if (loc == map[name]) {
var rightLoc = map[name+1];
}
}
loc[y][posX] = blank;
loc = rightLoc;
loc[2][1] = player;
break;
}
if (loc[y][posX+1] != blank) break;
if (posX < loc[y].length - 1) {
loc[y][posX] = blank;
loc[y][posX + 1] = player;
}
break;
}
}
【问题讨论】:
-
room2 定义在哪里?
-
这与实际问题无关,但是:这已经是我建议使用类的那种复杂性。这也将使房间命名更容易。
-
@IngoBürk:这有什么帮助?那么所有这些变量都将是对象属性,并且……?
-
也许我在解释发生了什么方面做得很差......我会尝试编辑它以使其更清晰。
-
我认为没有必要向您显示播放器的定义位置或房间 2。抱歉,我只是没想到你会想看很多代码.... player/room2/blank 的定义显然不是这里的问题。
标签: javascript arrays object for-loop for-in-loop