需要一种算法在六边形网格上随机生成组

Need an algorithm to randomly generate groups on a hexagon grid

我根据本文中的信息创建了一个六边形网格 https://www.redblobgames.com/grids/hexagons/

目前情况如下:

我想将此网格分成类似于这样的组:

我想在网格中有间隙,但我还需要连接所有组。本质上,我希望能够从组中的任何六边形移动到组中的任何其他六边形。

我的第一个想法是为每个组随机选择一个图块,然后向每个组添加一个相邻的图块,直到一个组接触到另一个组,然后可能会减少向该组添加另一个图块的机会。我对此主要担心的是,我最终可能会得到 2 个相互接触但与其余组没有连接的组。

欢迎任何想法。如果您需要更多信息,请告诉我。

我对此的解决方案是先移除边缘瓷砖。我通过创建一个循环来做到这一点,该循环随机 selects 一个与边缘相邻的图块并将其删除。这将重复随机次数。我这样做了几次,然后移除了内部瓷砖组。我首先 select 一个不与边缘相邻的随机图块并将其放入一个组中,select 它的一个不与边缘相邻的邻居并重复随机次数。完成后我得到了一些看起来不错的地图。

我唯一需要考虑的另一件事是,有时会创建“岛屿”,这意味着 1 个或几个图块没有连接到地图的其余部分。我通过创建一个函数来创建相邻图块组并删除除最大组以外的所有图块来解决这个问题。

这是一个例子: