具有超过2个状态的细胞自动机(不仅仅是活着或死亡)

时间:2017-03-27 22:26:38

标签: python-2.5 cellular-automata

我正在制作一个roguelike,在一个程序生成的星球上,这个环境是开放的世界。我希望每个生物群系的分布都是有机的。有5种不同的生物群落。有没有办法在没有庞大复杂算法的情况下有机地分发它们?我希望每个生物群系占用的空间量几乎相等。

在我为每个生物群系制作地形生成器之前,我曾使用过细胞自动机。每个瓷砖有2种不同的状态。有没有一种有效的方法来做5?

我正在使用python 2.5,虽然没有必要使用特定的代码。关于它的编程理论很好。

如果这个问题太开放了,那么我有什么资源可以解决这类问题吗?

1 个答案:

答案 0 :(得分:1)

您可以在任何单元格状态空间上定义元胞自动机。只需将单元格更新功能制定为F:Q^n->Q,其中Q是您的状态空间(此处为Q={0,1,2,3,4,5}),n是您所在社区的大小。

首先,只需将F写为多数规则,即0为中立状态,F(c)应返回1-5中邻近地区最高计数的值,如果没有,则0。如果相等,您可以随机选择一个最大值。

作为初始状态,从具有状态1-5的5个相对等距单元的配置开始(您可以通过可以移位/镜像的固定位置确定性地构建它们,或者随机生成这些点)。 / p>

当所有单元格的值都不是0时,您就拥有了地图。

随意改进更新功能,例如通过应用具有给定概率的规则。