假设我正在构建一个具有十六进制网格的棋盘游戏,比如
请注意,每个顶点和边可能都有一个属性(上面的道路和沉降)。
我如何制作一个代表这个线路板的数据结构?访问每个瓦片的邻居、边和顶点的模式是什么?
发布于 2009-12-03 17:19:55
这样的网格可以用二维数组表示:
如果
2
7 3
1
6 4
5
是十六进制网格中的第一个和它的邻居,那么你可以把它放到一个二维数组中,如下所示:
2 3
7 1 4
6 5
显然,在这个网格中,邻居不仅是水平或垂直相邻的,而且还使用一条对角线。
不过,如果您愿意的话,您也可以使用图表。
发布于 2009-12-04 03:46:49
This article介绍了如何设置异构/六边形网格游戏。我建议你看看Forcing Isometric and Hexagonal Maps onto a Rectangular Grid
部分和移动部分。尽管它与你正在寻找的东西不同,但它可能会帮助你制定出如何做你想做的事情。
发布于 2012-05-25 01:43:49
我和巫师打过很多交道。在这种情况下,您可以跟踪十六进制边界的6个点中的每个点。这使您可以很容易地绘制它。
您将拥有表示十六进制的单个对象数组。这些十六进制对象中的每一个都有6个“指针”(或指向另一个数组的索引),指向另一个“侧”数组。“顶点”也是如此。当然,顶点将有3个指针指向相邻的十六进制,边将有2个。
因此,十六进制可能是这样的: X,Y,点(6),顶点(6),边(6)
然后是十六进制数组、顶点数组和边数组。
然后很容易找到十六进制的顶点/边,或者其他任何东西。
当我说指针时,它可以很容易地是一个指向顶点或侧数组中的元素的整数。当然,数组可以是列表或其他任何形式。
https://stackoverflow.com/questions/1838656
复制相似问题