我正在用一个程序图做一个游戏,我想用这种方法:
Procedural Island Generation
它很容易实现,结果就是我想要的。
唯一让我纠结的是第三部分,当我必须绕着圈子随机地把水换成陆地时,当水碰到很多陆地时,就有更高的机会换成陆地。
我试过这样做:
if (rand() % 10 < 3 + countAdjacentTile(x, y, LAND))
countAdjaceNTTile函数只计算用X和Y坐标指定的磁贴周围标记为第三个参数的磁贴数。
所以,如果周围没有土地,水砖还是有机会变成地砖的,如果周围有土地,机会就更大。
但它给了我这个:
在我之前给出的链接中给出了这个:
我想要同样的树枝。你知道这个算法的名字吗我读过:
Exponential Distribution但这对我来说不是什么好话。。。
谢谢你到目前为止的阅读。
最佳答案
countAdjaceNTTile()如何工作?是对角线上的瓷砖数,还是只有4个邻居如果你数对角线,尽量不要这样做。也可以尝试调整常量-10和3,很难说没有这段代码哪个值是好的,只需检查一些组合并选择最佳结果。
关于c++ - 伪随机程序生成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20677716/