我正在尝试设计一个非方形的棋盘游戏。在这里,我们有2种不同类型的碎片(攻击者和防御者)。两者都可以移动到任何相邻的自由交叉口。如果同一行中的相邻交叉路口有空白,攻击者玩家也可以跳上防御者玩家。考虑到这些情况,我可以考虑将板存储为阵列。 但这不是正确的选择,因为我需要从每个索引中找出可攻击的位置。在设计此评估板时需要您的建议。 另一种选择是使用图形并保持节点的方向(左,右,上,下),但这将需要在板的顶部顶点上有3个下节点。
答案 0 :(得分:1)
这两次,我不得不创建一个play_line
数据类型。我有带有节点和边的规范图; play_line
是一系列边。
合法地移动到相邻的自由交叉点是仅从图形来看的微不足道的属性。节点A
上的一块m
可以移动到任何节点n
,
n
为空从m
越过n
到p
的地方存在
n
包含一块D
(防御者)play_line
的边(m,n)沿(n,p)是该行的下一条边。有帮助吗?
OP评论后更新
play_line
对象不需要维护,因为一旦初始化,游戏路线就不会改变。这些是从游戏板上进行的硬编码,是图形的增强。例如,如果木板贴有标签
a
b c d e f
g h i j k
l m n o p
q r s
然后,第一整行是一个比赛行,其中依次包含五个节点[b, c, d, e, f]
。 (b, c), (c, d), (d, e), (e, f)
有相应的图形边缘(通过构造校正)。请注意,您的代码必须沿任一方向遍历,或以相反的顺序进行第二次play_line
。