【发布时间】:2013-12-19 09:25:41
【问题描述】:
我正在使用程序地图制作游戏,我想应用这种方式:
它很容易实现,结果正是我想要的。
我唯一坚持的部分是第 3 部分,当我必须绕圈并随机将水变为陆地时,当水接触到大量陆地时,水变为陆地的机会更高。
我试过这样做:
if (rand() % 10 < 3 + countAdjacentTile(x, y, LAND))
countAdjacentTile 函数只计算用 x 和 y 坐标指定的图块周围标记为第三个参数的图块数。
因此,如果周围没有土地,水瓦仍然有机会变成土地瓦,如果周围有土地,机会就更高。
但它给了我这个:
虽然它在我之前给出的链接上给出了这个:
我想拥有相同种类的分支。你知道这个算法的名称吗?我读过这个: Exponential Distribution 但这对我来说不是很健谈...
感谢您到目前为止的阅读。
【问题讨论】:
-
您是否仔细检查过您的
countAdjacentTile函数是否返回了您所期望的结果? -
是的,我得到了很好的返回值。
-
如果您使用的是 C++11 编译器,您可能会考虑使用
random标头中较新的随机生成器之一。rand不是最好的,将它与 mod 混合往往会使情况变得更糟。 -
你玩过概率吗?
标签: c++ algorithm random procedural-generation