Javascript 帆布游戏:我的食物消失了

Javascript 帆布游戏:我的食物消失了,javascript,html,canvas,coffeescript,Javascript,Html,Canvas,Coffeescript,我在看ThinkVitamin关于构建一个画布游戏的视频,但似乎最后一部分不见了,我不得不自己弄清楚很多东西 我成功地构建了这个游戏,但是有两个bug不断出现 编辑:将第一个BUG转移到另一个问题中,因为这一个问题得到了回答 另一个错误是食物有时不出现。我不知道为什么会发生这种情况,但我唯一能想到的是蛇体内的食物。然而,我也为此实施了一项检查,但这种情况仍然存在: inSnake = (x, y) -> for part in Snake.position

我在看ThinkVitamin关于构建一个画布游戏的视频,但似乎最后一部分不见了,我不得不自己弄清楚很多东西

我成功地构建了这个游戏,但是有两个bug不断出现

编辑:将第一个BUG转移到另一个问题中,因为这一个问题得到了回答

另一个错误是食物有时不出现。我不知道为什么会发生这种情况,但我唯一能想到的是蛇体内的食物。然而,我也为此实施了一项检查,但这种情况仍然存在:

inSnake = (x, y) ->
    for part in Snake.position              # check if the food is being placed inside the snake
        if x == part.x && y == part.y
            true
    false

placeFood = ->
    x = Math.round Math.random() * MAX_X - 1
    y = Math.round Math.random() * MAX_Y - 1

    if inSnake x, y                                     # if so, run placeFood() again
      placeFood()   

    Food.position = { x: x, y: y }
食物应该随机放在我的画布里(我指定了MAX_X和MAX_Y),所以我只能想象它在蛇里面。。我调试这个问题有困难

可以找到该应用程序的演示

提前谢谢

inSnake = (x, y) ->
    for part in Snake.position              
        if x == part.x && y == part.y
            true
    false

看起来您想说
返回true
。否则,它将始终运行整个循环,并在函数末尾返回
false

我得到
未捕获范围错误:当我更改该值时,超过了最大调用堆栈大小
;看起来它一直在调用placeFood()。试着打印出x和y。看看编译后的JS。没有括号,我不知道什么是
Math.round Math.random()*MAX_X-1
意思。哦,你说得对。我需要括号(MAX_X-1)。我想这解决了食物消失的问题。谢谢你确定不是食物中毒(失去食物)造成的吗?