2011-11-03 39 views
2

我正在觀看有關構建帆布遊戲的ThinkVitamin截屏視頻,但它似乎最後一部分不見了,我不得不自己弄清了很多東西。Canvas遊戲:我的食物消失

我成功地構建了遊戲,但是有兩個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),所以我只能認爲這是蛇裏面的..我在調試這個問題時遇到了麻煩。

該應用程序的演示可以找到here

在此先感謝!

+0

你確定它不是由於食物中毒(丟失食物)嗎?

回答

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

看起來像你想說的return true。否則它將始終運行整個循環,並在函數結束時返回false

+0

我得到'未捕獲RangeError:最大調用堆棧大小超過'當我改變它;似乎它一直呼籲placeFood()然後。 – cabaret

+0

嘗試打印出x和y。並看看編譯的JS。沒有括號,我不知道'Math.round Math.random()* MAX_X - 1 '的含義。 – Thilo

+0

哦,你說得對。我需要括號(MAX_X - 1)。我想這可以修復食物消失的錯誤。謝謝! – cabaret