2016-06-14 115 views
0

在蛇遊戲隨機食物位置我有問題理解爲什麼它要計算這樣的食品的位置:計算C語言

foodSite.x = (rand()%23*2+1)+2; 
foodSite.y = rand()%17+2; 

在遊戲中的邊界尺寸爲50 * 19。我嘗試將代碼更改爲rand()%49 + 1和rand()%18 + 1,但這時遊戲無法正常工作。食物不會被蛇吃掉。它只停留在相同的位置。

+2

,我們需要對代碼的詳細信息,以determien是怎麼回事 –

+0

請仔細閱讀[問],編輯問題, – OldProgrammer

+0

完整的代碼是這個網站上http://rosymoggy.blogspot.tw/2014/01/c的.html#註釋形式。但是我不能在這裏複製完整的代碼。 –

回答

1
  • 鑑於

    foodSite.x = (rand()%23*2+1)+2; 
    foodSite.y = rand()%17+2; 
    

    的用於xy域是分別[3, 47][2, 18]

  • 相反,給定

    foodSite.x = rand()%49+1; 
    foodSite.y = rand()%18+1; 
    

    域爲xy分別[1, 49][1, 18]

因此,這兩個表達式不對應等效域。

至於爲什麼遊戲不工作的原因,很可能是在食品是不應該被放置在一些地方,這只是硬編碼以某種方式

+1

很好的答案,儘管'x'只能是奇數,甚至不能。但我認爲OP想明白爲什麼座標是這樣計算的,這些字段代表什麼。無論如何,這不是一個這樣的問題的地方,他的問題缺乏信息,所以。 。 。 。 。 。 – qreon

+0

@克雷恩感謝您指出,它滑倒了我的腦海:) –

+1

我想我有點想出來。我只是改變了printWall函數,發現x座標之間的空間是y座標之間的一半。這就是爲什麼董事會是一個正方形而不是矩形。 所以,可能這就是爲什麼23次要2次的原因。我只是試過foodSite.x = rand()%23 * 2 + 1,它運行良好。 (這只是我的猜測。) 我知道這不是一個很好的問題,但我已經搜索了大量的信息。我無法弄清楚。真的很抱歉。 –