如何编写自己的地图生成器?

2024-06-01 04:57:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我想为自己写一个简单的地图生成器,我不知道怎么咬。现场必须抽签六边形。在

当我生成随机瓷砖时,我必须注意邻居。那么我要考虑已有的两个邻居,等等递归?我决定这片土地可以是水,土地,山脉,但在一片土地上,可能是从水到陆地的过渡,有一边。在

数组将由一个指定平铺类型的数字组成。 我想用python来学习。在

请给我一些建议。在


Tags: 类型地图数字数组现场建议土地瓷砖
3条回答

很多年前,我实现了一些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

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

^{pr2}$

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

当然,你必须注意地图的边缘。在

可能没有必要使用递归。既然你这样做是为了学习,我只给你一个如何进步的大纲。在

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

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

使用坐标系循环遍历所有瓷砖。对于每个瓷砖,检索其相邻部分。如果邻域没有类型,则可以忽略它,否则,请根据其邻居的特性确定平铺的特性。在

我认为最重要的是在地图上标出你的六边形,这样可以方便地检查邻居。。。在

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

为了填充地图,你可以在所有的方格上迭代,从允许的瓷砖集中随机选择一个(基于它当前的邻居)。在

相关问题 更多 >