我正在使用JavaScript和HTML5画布编写简单的蛇游戏。 我有保持蛇块这样的多维数组:在javascript中查找另一个多维数组中的数组
snake=[[1,1],[1,2]];
并使用(snake.indexOf([i],[j])!=-1
)将它放在arrayMap然后绘制arrayMap在画布上。
for (var i = 0; i < blocksHeightCount; i++) {
for (var j = 0; j < blocksWidthCount; j++) {
if ((snake.indexOf(i,j)!=-1)||
(walls.indexOf(i,j)!=-1)||
(foods.indexOf(i,j)!=-1)) {
arrayMap[i][j]=1;
} else {
arrayMap[i][j]=0;
}
}
}
for (var i = 0; i < blocksHeightCount; i++) {
for (var j = 0; j < blocksWidthCount; j++) {
Block = arrayMap[i][j];
if (Block!=0){
ctx.fillStyle = (Block != 9) ? colors[Block]
: "#bdc3c7";
ctx.fillRect(j * cubeWidth, i * cubeHeight
, cubeWidth-.4,cubeHeight-.4);
}
}
}
问题是indexOf
当我设置数组时它不工作! 它工作正常,当我设置indexOf(“我,j”),但我需要它是数组。
请帮助,THX
[i],[j]是不正确的语法。也许你的意思是'snake [i] [j] .indexOf(someInt)' – mplungjan 2014-08-27 13:22:19
尝试将其称为'indexOf([i,j])' – webNeat 2014-08-27 13:23:03
注意:考虑通过从一个空数组开始设置arrayMap点,然后遍历蛇,墙,食物并在arrayMap中设置包含点;所以你不要搜索网格中的每一个点的所有三个数组 - 并且根本不需要indexOf :-) – fast 2014-08-27 13:26:56