在JPEG上分层画布对象 - JavaScript

时间:2014-04-06 14:21:03

标签: javascript canvas overlapping maze

我正在创建一个迷宫游戏,到目前为止已经渲染了一个玩家将移动并加载迷宫jpeg的圆圈。 当两个重叠时,圆圈被JPEG隐藏,允许两个对象重叠的方法是什么?

问题2 我创建了一个10 x 10的表格,其中包含1到100的单元格ID,并将这些值放在一个数组中。对于我的游戏,我需要检查玩家想要进入的方格的ID,看看他们是否可以去那里。我会使用哈希表查找或我该怎么做?

1 个答案:

答案 0 :(得分:1)

问题#1:

最后绘制的对象始终位于顶部,因此首先绘制迷宫,然后将播放器放在第二位。

问题#2:

将细胞布置成二维阵列可能更容易:

// note: these example numbers do not form a valid maze :-)

var maze=[
    [0,0,1,0,0,1,1,0,0,1],
    [0,0,1,0,0,1,1,0,0,1],
    [0,0,1,0,0,1,1,0,0,1],
    [0,0,1,0,0,1,1,0,0,1],
    [0,0,1,0,0,1,1,0,0,1],
    [0,0,1,0,0,1,1,0,0,1],
    [0,0,1,0,0,1,1,0,0,1],
    [0,0,1,0,0,1,1,0,0,1],
    [0,0,1,0,0,1,1,0,0,1],
    [0,0,1,0,0,1,1,0,0,1],
];

...并将角色的位置定义为x,y坐标:

var playerX=5;
var playerY=5;

然后你可以像这样检查与玩家相邻的每个单元格:

var north=maze[ playerX,   playerY-1 ];
var south=maze[ playerX,   playerY+1 ];
var east=maze[  playerX+1, playerY ];
var west=maze[  playerX-1, playerY ];

...然后允许/禁止移动。

但是如果你真的想要使用单个数组,你可以将单元格0-99转换为x,y,如下所示:

var cell=50;

var cellWidth=10;

var y=cell/cellWidth;

var x=cell-y*cellWidth;

...然后像这样将x,y转换为单元格0-99:

var cell=y*cellWidth+x;