表示非方形棋盘游戏的数据结构
data structure for representing non square board game
我正在尝试设计一个不是正方形的棋盘游戏。这里我们有 2 种不同类型的棋子(攻击者和防御者)。两者都可以移动到任何相邻的自由路口。如果在同一行的相邻路口有空位 space,进攻方玩家也可以跳到防守方玩家身上。考虑到这些情况,我可以考虑将电路板存储为数组。
但这不是一个正确的选择,因为我需要从每个索引中对可攻击位置进行硬编码。需要您对设计此板的建议。
另一种选择是使用图形并保持节点的方向(左、右、上、下),但这需要在板的顶部顶点有 3 个下节点。
我不得不这样做的两次,我创建了一个 play_line
数据类型。我有带有节点和边的规范图; play_line
是一个边序列。
仅从图表来看,合法移动到自由的相邻交叉路口是微不足道的 属性。节点 m
处的一块 A
可以移动到任何节点 n
其中
- 边 (m,n) 存在
- 节点
n
为空
存在从 m
、n
到 p
的跳转,其中
- 边 (m,n) 存在
- 边 (n,p) 存在
- 节点
n
包含一块D
(防御者)
- 节点 p 为空
- 沿着包含边 (m,n) 的
play_line
,(n,p) 是该线上的下一条边。
有帮助吗?
OP评论后更新
play_line
对象没有什么需要维护的,因为一旦初始化,游戏路线就不会改变。这些是来自游戏板的 hard-coded,是图表的增强版。例如,如果电路板被标记为
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
。
我正在尝试设计一个不是正方形的棋盘游戏。这里我们有 2 种不同类型的棋子(攻击者和防御者)。两者都可以移动到任何相邻的自由路口。如果在同一行的相邻路口有空位 space,进攻方玩家也可以跳到防守方玩家身上。考虑到这些情况,我可以考虑将电路板存储为数组。
但这不是一个正确的选择,因为我需要从每个索引中对可攻击位置进行硬编码。需要您对设计此板的建议。
另一种选择是使用图形并保持节点的方向(左、右、上、下),但这需要在板的顶部顶点有 3 个下节点。
我不得不这样做的两次,我创建了一个 play_line
数据类型。我有带有节点和边的规范图; play_line
是一个边序列。
仅从图表来看,合法移动到自由的相邻交叉路口是微不足道的 属性。节点 m
处的一块 A
可以移动到任何节点 n
其中
- 边 (m,n) 存在
- 节点
n
为空
存在从 m
、n
到 p
的跳转,其中
- 边 (m,n) 存在
- 边 (n,p) 存在
- 节点
n
包含一块D
(防御者) - 节点 p 为空
- 沿着包含边 (m,n) 的
play_line
,(n,p) 是该线上的下一条边。
有帮助吗?
OP评论后更新
play_line
对象没有什么需要维护的,因为一旦初始化,游戏路线就不会改变。这些是来自游戏板的 hard-coded,是图表的增强版。例如,如果电路板被标记为
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
。