伪随机的程序生成

时间:2013-12-19 09:25:41

标签: c++ algorithm random procedural-generation

我正在制作一个带有程序图的游戏,我想采用这种方式:

Procedural Island Generation

它易于实现,结果正是我所寻找的。

我唯一坚持的部分是第3部分,当我不得不四处乱转并随意换水降落时,当水接触大量土地时,水更有可能变成土地。

我试过这样做:

if (rand() % 10 < 3 + countAdjacentTile(x, y, LAND))

countAdjacentTile函数只计算标记为使用x和y坐标指定的图块周围的第三个参数的图块数。

因此,如果周围没有土地,水砖仍然有可能变成地砖,如果周围有土地,则有机会上层。

但它给了我这个:

enter image description here

虽然它在我之前给出的链接上给出了这个:

enter image description here

我想拥有同样的分支机构。你知道这个算法的名字吗?我读过这个: Exponential Distribution但那对我来说并不是很健谈......

感谢您的阅读。

2 个答案:

答案 0 :(得分:1)

countAdjacentTile()如何工作?它是否计算对角线上的瓷砖,或只是4个邻居?如果算上对角线,请尝试不要这样做。还要尝试调整常量 - 即10和3,如果没有此代码,很难说哪些值会好,只需检查一些组合并选择最佳结果。

答案 1 :(得分:0)

您可能想要编写一个函数,根据到岛屿中心的距离给出密度。然后使用此密度值来加权定义元素是陆地还是水的阈值。