2016-06-14 110 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,它运行良好。 (这只是我的猜测。) 我知道这不是一个很好的问题,但我已经搜索了大量的信息。我无法弄清楚。真的很抱歉。 –