我做了一个蛇游戏,但是当我向右走时,点击下来&同时离开它认为它与自身相撞并死亡。
事件的代码是:
$(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;
}
答案 0 :(得分:0)
这不是错误。
每帧之间的时间步长很大,您可以在一帧内轻松生成两个keydown函数调用。
- >这导致你的蛇首先(例如)向右移动,然后获得“向下”按键,将其方向改为“向下”,然后在移动之前获得“左”键按压。所以你的蛇在一个框架中“转180度”并且自己吃掉了。
你应该确保在一帧中接受一个单一的新方向,并且(为了更好地提升游戏玩法)将其他按键排队,以计算它们在以下帧中的影响。