关于java:在2d数组中随机生成集群

Randomly generating clusters in a 2d array

我正在创建一个2d平铺游戏,我想知道在其中生成特定平铺类型的集群的最佳方法是什么。 例如,假设我有一个二维数组是我的地图。 草由0表示。

1
2
3
4
5
6
{{0, 0, 0, 0, 0, 0}
 {0, 0, 0, 0, 0, 0}
 {0, 0, 0, 0, 0, 0}
 {0, 0, 0, 0, 0, 0}
 {0, 0, 0, 0, 0, 0}
 {0, 0, 0, 0, 0, 0}}

现在,我想要做的是在我的数组中随机创建一个树簇(由1表示)。 我希望它看起来像这样:

1
2
3
4
5
6
{{0, 0, 0, 0, 0, 0}
 {0, 0, 0, 0, 0, 0}
 {0, 1, 1, 1, 0, 0}
 {0, 1, 1, 1, 1, 0}
 {0, 0, 1, 1, 1, 0}
 {0, 0, 1, 1, 0, 0}}

最好的方法是什么?


实现一个方法M,它执行此操作:对于给定的一组位置S,它需要它们的相邻位置N,但只有那些在它们自身内没有树的位置; 将树放在这些相邻位置N中的一些中,并且称其自身递归地仅传递其放置树的相邻位置K(K是N的子集)。

现在触发整个事情:在一个点p中随机放置一棵树,并调用M传递给位置p的集合/列表到方法M.

该算法保证您将生成一个集群(我的意思是一组树,其中每两棵树由其他树连接)。

确保您的递归在某个时刻停止(您可以通过引入某些阈值或使用其他适当的启发式方法来实现此操作)。