2

我正在制作一个基本游戏,现在我正在进行碰撞检查。我从一个数组加载我的mapp,但我被困在绘制它的代码上。

加载数组:

var levelArray=[
    [1,0,0,0,0,0,0,0,0,1],
    [1,0,2,0,0,0,0,0,0,1],
    [1,0,0,0,0,0,0,0,0,1],
    [1,0,0,0,0,0,0,0,0,1],
    [1,0,0,0,0,0,0,0,0,1],
    [1,0,0,0,0,0,0,0,0,1],
    [1,0,0,0,0,0,0,0,0,1],
    [1,0,0,0,0,0,0,0,0,1],
    [1,0,0,0,0,0,0,0,0,1],
    [1,1,1,1,1,1,1,1,1,1]
]

这是我尝试绘制块(1)的代码。

for(arrayx=0;arrayx<11;arrayx++){
        if (levelArray[arrayx][arrayy]==1){
            canvas_context.fillStyle = "blue";
            canvas_context.fillRect(arrayx*32,arrayy*32,32,32);
        }
        if (arrayx==10 && arrayy<11){
            arrayy++
        }
    }

有人可以帮助我并告诉我哪里出错了吗?

4

2 回答 2

2

只需像这样在循环内制作循环:

var x;
var y;
var lengthX;
var lengthY;

for(x = 0 , lengthX = levelArray.length ; x < lengthX ; x++){
    for(y = 0 , lengthY = levelArray[x].length ; y < lengthY ; y++){
        if(levelArray[x][y] == 1){
            //draw
        }
    }
}

或者 y first 和 x inside y 循环。

于 2013-06-04T19:54:21.353 回答
0

您没有循环遍历数组的每个元素。使用两个 for 循环。

于 2013-06-04T20:18:04.583 回答