帆布蛇虫事件

时间:2013-05-29 21:15:49

标签: jquery canvas

我做了一个蛇游戏,但是当我向右走时,点击下来&同时离开它认为它与自身相撞并死亡。

事件的代码是:

$(document).keydown(function(e){

var key = e.which;

if(key == "37" && dir!= "right") dir = "left";
else if (key == "38" && dir != "down") dir = "up";
else if (key == "39" && dir != "left") dir = "right";
else if (key == "40" && dir != "up") dir = "down";



})

我将这段代码放在一个每60毫秒重新绘制一次的paint方法中

var headX = snakeArray[0].x;
var headY = snakeArray[0].y;

//directions
if (dir == "right") headX++;
else if (dir == "left") headX--;
if(dir =="up") headY--;
else if (dir == "down") headY++;


//game over clause
if (headX == -1 || headX == w/cellSize || headY == -1 || headY == h/cellSize ||     CheckCollision(headX,headY, snakeArray))
{
//restart game
init();
return;
}

自己测试游戏: http://www.taffatech.com/Snake.html

1 个答案:

答案 0 :(得分:0)

这不是错误。

每帧之间的时间步长很大,您可以在一帧内轻松生成两个keydown函数调用。

- >这导致你的蛇首先(例如)向右移动,然后获得“向下”按键,将其方向改为“向下”,然后在移动之前获得“左”键按压。所以你的蛇在一个框架中“转180度”并且自己吃掉了。

你应该确保在一帧中接受一个单一的新方向,并且(为了更好地提升游戏玩法)将其他按键排队,以计算它们在以下帧中的影响。