我想为自己写一个简单的地图生成器,我不知道如何咬人。字段必须绘制六边形。
当我生成随机区块时,我必须注意邻居。然后我必须考虑已经两个邻居,等等递归?我确定这个地方可能是水,地球,山脉 - 但是在一个地方可能是从一个地方到另一个地方的过渡。
数组将包含一个指定tile类型的数字。 我想在python中实现它 - 用于学习。
请一些建议。
答案 0 :(得分:0)
可能不需要使用递归。由于您将此作为学习练习,我将仅向您提供如何进展的概述。
六角形网格需要一个坐标系,用于行和列。
创建一个函数neighbours
,给定块的坐标x,y返回该块的所有邻居。
使用坐标系循环遍历所有切片。对于每个图块,检索其邻居。如果邻居没有类型,您可以忽略它,否则,根据其邻居的字符确定一个瓦片的字符。
答案 1 :(得分:0)
我认为最重要的是在地图上表示你的六边形,这样可以轻松地检查邻居......
一个明智的选择可能是使用2D元组,因此六边形(1,1)的6个邻居是(1,0),(2,0),(2,2),(1,2) ,(0,2)和(1,1) - 从北/上开始顺时针方向。
要填充地图,您可以迭代所有正方形,从可允许的图块集中选择一个随机选择(基于它的当前邻居)。
答案 2 :(得分: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
当然,您必须了解地图边缘。