在2d数组中随机生成聚类

时间:2015-02-09 23:20:40

标签: java multidimensional-array

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

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

{{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}}

最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

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

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

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

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