0

我想为自己写一个简单的地图生成器,我不知道怎么咬。字段将不得不抽签六角形。

当我生成随机图块时,我必须注意邻居。那我还要考虑已经有两个邻居等等递归?我确定田地可能是水、土、山——但在一个田地中可能是从水到陆地的过渡,其中一侧。

一个数组将包含一个指定图块类型的数字。我想用 python 来做 - 学习。

请给点建议。

4

3 回答 3

0

很多很多年前,我实现了一些 hexmap 例程。我不记得确切的细节,但我使用了一个坐标系,使得每一行都与下一行偏移 1。

像这样:

00  01  02  03  04  05  06  07
  10  11  12  13  14  15  16  17
20  21  22  23  24  25  26  27
  30  31  32  33  34  35  36  37

因此,您可以通过将这些偏移量应用于十六进制自己的坐标(从上面的十六进制开始,向左,顺时针方向)来找到一个十六进制邻居的坐标:

-1,-1  -1,0  0,1  1,0  1,-1  0,-1

所以 hex 24 的邻居是:13, 14, 25, 34, 33, 24

当然,您必须注意地图边缘。

于 2012-09-19T16:18:26.330 回答
0

可能不需要使用递归。由于您将此作为学习练习,因此我只会为您提供如何进步的大纲。

六边形网格需要一个坐标系,用于行和列。

创建一个函数neighbours,给定一个图块的坐标 x,y,返回该图块的所有邻居。

使用您的坐标系循环遍历所有图块。对于每个图块,检索其邻居。如果邻居没有类型可以忽略它,否则,根据其邻居的字符确定图块的字符。

于 2012-09-19T10:16:05.277 回答
0

我认为最重要的是在地图上标出你的六边形,以便于检查邻居......

一个明智的选择是使用二维元组,这样六边形 (1,1) 的 6 个邻居是 (1,0),(2,0),(2,2),(1,2),(0 ,2) 和 (1,1) - 从北/上开始顺时针方向。

要填充地图,您可以迭代所有方块,从一组允许的图块中随机选择一个(基于它的当前邻居)。

于 2012-09-19T10:16:19.723 回答