gpt4 book ai didi

algorithm - 表示非方形棋盘游戏的数据结构

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:06:36 24 4
gpt4 key购买 nike

我正在尝试设计一个不是正方形的棋盘游戏。这里我们有 2 种不同类型的棋子(攻击者和防御者)。两者都可以移动到任何相邻的自由路口。如果同一条线上的相邻路口有空位,进攻方玩家也可以跳到防守方玩家身上。考虑到这些情况,我可以考虑将电路板存储为数组。但这不是一个正确的选择,因为我需要从每个索引中对可攻击位置进行硬编码。需要您对设计此板的建议。另一种选择是使用图形并保持节点的方向(左、右、上、下),但这需要在板的顶部顶点有 3 个下节点。 enter image description here

最佳答案

我不得不这样做两次,我创建了一个 play_line 数据类型。我有带有节点和边的规范图; play_line 是边的序列。

从图形上看,合法移动到相邻的自由交叉路口是一个微不足道的属性。节点 m 处的一 block A 可以移动到任何节点 n where

  • 存在边(m,n)
  • 节点n为空

mnp 的跳转存在于

  • 存在边(m,n)
  • 存在边(n,p)
  • 节点n包含一 block D(防御者)
  • 节点p为空
  • 沿着包含边 (m,n) 的 play_line,(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

关于algorithm - 表示非方形棋盘游戏的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56447355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com