所以这就是游戏循环的样子。我只是通过setInterval()设置它 它首先清除屏幕并绘制hud。在计算了运动之后,然后绘制了一切,并检查了碰撞(我对这些没有任何麻烦)我希望一旦玩家输了,他们就可以重新开始游戏。
目前所做的只是调用window.location.reload()并返回开始菜单。 当玩家撞墙或与自己发生碰撞时,玩家会输。
这是在checkcollision()函数中计算的,我尝试了clearInterval(游戏);这很难奏效。我认为它与checkcollision()在游戏循环中并尝试使用一系列return语句有关。虽然不起作用,但我还尝试将游戏统计和功能(得分等)移动到游戏对象中,并尝试通过制作新的游戏对象来重启游戏。但所有这一切都使它们重叠,即使是相同的参考。
我很困惑,想知道我是不是走错了路。就像我的意思它工作正常(在chome / safari / ff,有没有办法让画布与IE一起工作?)但我只想得到一个像样的暂停/重启系统。
这是我的代码,但你也可以查看我到目前为止工作的内容并检查完整的代码here
var game=setInterval(function(){
ctx.clearRect(0,0,c.width,c.height);
if(score>localStorage.highscore){localStorage.highscore=score}
hud();
snakeMove();
draw();
checkCollision();
},1000/60);