2024-06-01 04:57:24 发布
网友
我想为自己写一个简单的地图生成器,我不知道怎么咬。现场必须抽签六边形。在
当我生成随机瓷砖时,我必须注意邻居。那么我要考虑已有的两个邻居,等等递归?我决定这片土地可以是水,土地,山脉,但在一片土地上,可能是从水到陆地的过渡,有一边。在
数组将由一个指定平铺类型的数字组成。 我想用python来学习。在
请给我一些建议。在
很多年前,我实现了一些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的邻居的坐标:
所以hex 24的邻居是: 13、14、25、34、33、24
当然,你必须注意地图的边缘。在
可能没有必要使用递归。既然你这样做是为了学习,我只给你一个如何进步的大纲。在
六边形网格需要一个坐标系,用于行和列。在
创建一个函数neighbours,给定一个图块的坐标x,y将返回该图块的所有邻居。在
neighbours
使用坐标系循环遍历所有瓷砖。对于每个瓷砖,检索其相邻部分。如果邻域没有类型,则可以忽略它,否则,请根据其邻居的特性确定平铺的特性。在
我认为最重要的是在地图上标出你的六边形,这样可以方便地检查邻居。。。在
一个明智的选择是使用2D元组,这样六边形(1,1)的6个邻居是(1,0),(2,0),(2,2),(1,2),(0,2)和(1,1)-从北/上开始,顺时针。在
为了填充地图,你可以在所有的方格上迭代,从允许的瓷砖集中随机选择一个(基于它当前的邻居)。在
很多年前,我实现了一些hexmap例程。我不记得具体的细节,但我使用了一个坐标系,使得每一行与下一行的偏移量为1。在
像这样:
因此,你可以通过将这些偏移量应用到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)-从北/上开始,顺时针。在
为了填充地图,你可以在所有的方格上迭代,从允许的瓷砖集中随机选择一个(基于它当前的邻居)。在
相关问题 更多 >
编程相关推荐