【问题标题】:Canvas game: My food disappears画布游戏:我的食物消失了
【发布时间】:2011-12-21 01:41:01
【问题描述】:

我正在观看有关构建画布游戏的 ThinkVitamin 截屏视频,但似乎最后一部分丢失了,我必须自己弄清楚很多东西。

我成功构建了游戏,但是其中不断出现两个错误。

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

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

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),所以我只能认为它在蛇内。我在调试这个问题时遇到了麻烦。

可以在here找到应用程序的演示。

提前致谢!

【问题讨论】:

  • 你确定不是食物中毒(失去食物)?

标签: javascript html canvas coffeescript


【解决方案1】:
inSnake = (x, y) ->
    for part in Snake.position              
        if x == part.x && y == part.y
            true
    false

你好像想说return true。否则它将一直运行整个循环并在函数结束时返回false

【讨论】:

  • 当我改变它时我得到Uncaught RangeError: Maximum call stack size exceeded;似乎它一直在调用 placeFood()。
  • 尝试打印出 x 和 y。并查看编译好的 JS。没有括号,我不知道Math.round Math.random() * MAX_X - 1 是什么意思。
  • 哦,你是对的。我需要括号(MAX_X - 1)。我想这修复了食物消失的错误。谢谢!
猜你喜欢
  • 2014-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-22
  • 2022-11-19
  • 1970-01-01
  • 2013-07-02
相关资源
最近更新 更多