【发布时间】:2011-12-22 03:52:09
【问题描述】:
自从我的另一个错误得到解决后,我将针对这个错误发布一个新问题。
我制作了一个 Snake 画布游戏,但是当您同时按下两个按钮时,我的蛇往往会吃掉自己。我不知道如何正确解释,但会发生这种情况:
假设我的蛇向左移动,我按下 + 右,它会吃掉自己并触发游戏结束。当它向右移动时也一样:向下+向左和砰,死了。不过,当蛇上下移动时,我似乎无法重现该错误..
这是改变方向的代码:
bindEvents = ->
keysToDirections =
37 : LEFT
38 : UP
39 : RIGHT
40 : DOWN
$(document).keydown (e) ->
key = e.which
newDirection = keysToDirections[key]
if newDirection
setDirection newDirection
e.preventDefault()
setDirection = (newDirection) ->
# TODO: there's some bug here; try pressing two buttons at the same time..
switch Snake.direction
when UP, DOWN
allowedDirections = [LEFT, RIGHT]
when LEFT, RIGHT
allowedDirections = [UP, DOWN]
if allowedDirections.indexOf(newDirection) > -1
Snake.direction = newDirection
我认为编译的 JS 有问题,因为我的 switch 语句在最后一个 case 上没有 break;但是,我尝试将else return 添加到咖啡脚本文件中,但这并没有改变任何东西。我在这里完全迷路了,所以我希望有人能够发现我哪里出错了。
似乎它正确地使用了 keydown 事件,但是当你按得太快时它们会被覆盖。如果这有意义吗?就像..当蛇向右移动时,您会向上按,但是在它实际上有机会向上移动之前您按向左,然后它就向左移动。那里乱七八糟的句子,我建议你玩一会儿,如果你和我一样感兴趣,我建议你尝试重现这个:(
我不知道如何正确调试它。当我执行console.log 时,游戏循环往往会向我发送垃圾邮件。
可以在here找到现场演示和指向我的 github 存储库的链接
提前致谢。
【问题讨论】:
标签: javascript html canvas coffeescript