为了在不使用矩阵的情况下生成这样的地图,我建议从中心图块开始,然后使用修改后的广度优先搜索算法向外填充地图。首先,我们需要一些比相邻瓷砖列表更好的东西。您可以简单地拥有四个变量,一个用于存储下一个图块的每个方向,例如:

private Tabellone up = null;
private Tabellone down = null;
private Tabellone left = null;
private Tabellone right = null;

假设我们从最中间的瓷砖开始。现在您需要做的就是找出有多少个方向为空,并为每个方向创建一个新的Tablellone对象,确保设置当前对象中的每个变量,并在创建的对象中设置相应的相反变量。

Tabellone adj = new Tabellone();
up = adj;
adj.setDown(this);

填写完此图块上的所有方向后,可以选择创建的其他图块之一并执行相同的操作。这就是广度优先搜索算法出现的地方。您可以使用队列浏览创建的每个图块并填写说明。要停止算法,只需对要创建的图块数量设置限制,并使用计数器跟踪创建的图块数量。

int count = 0;
ArrayList queue = new ArrayList()
queue.add(/*center tile*/);
while (count < 100) { //if we want 100 tiles
//take out the center tile from the beginning of the array list, create a tile for each direction and add those tiles to the array list, then increment count by 1.
}

注:

这个算法将创建一个菱形的地图,如果你想要一个正方形,你需要为每个对角线方向都有一个变量。

当然,如果这看起来比你想要的要复杂一点,我推荐一个坐标系。