【问题标题】:How to store the path of a game pawn in a turn based game?如何在回合制游戏中存储游戏棋子的路径?
【发布时间】:2023-03-30 14:56:01
【问题描述】:

我有一个方形网格,用于回合制游戏(网格类似于国际象棋棋盘),但游戏中的移动会根据您是否至少与对手棋子重叠一次而有所不同。

即如果你没有在最外面的网格中圈(击败任何对手棋子),如下所示

alt text http://img17.imageshack.us/img17/4508/squaregrid7x7home.png

如果您至少将对手的棋子圈了一次,那么您就可以通过这种方式回到家。任何让所有棋子都先到达“家”的玩家获胜。

alt text http://img249.imageshack.us/img249/318/squaregrid7x7movesimple.png

黄色的是安全屋,即对方棋子和玩家棋子都留在同一个网格中,这不被认为是重叠的(对手)。重叠的棋子将返回其起点.

现在的问题是,存储所有棋子路径的有效方法是什么。我们将有 4 个棋子用于玩家和 4 个对手棋子。

是否有任何模式可以优雅地存储此类静态信息?

感谢您的宝贵时间

【问题讨论】:

  • 棋子是否总是在棋盘周围的固定路径上移动?每个空格是否从头到尾按顺序编号(即使数字未显示在屏幕上,也可能在数据结构中)?看上面的例子,如果你只是存储了编号空格的列表(例如 45,48,6,0,...),pawn 似乎会随意移动而不是朝着某个目标移动。如果空格按顺序编号,则很容易确定一个棋子是否已经超过(超过)另一个,因为重叠的最近位置将高于重叠的最近位置。
  • 是的,棋子总是在设定的路径中移动。空格在内部编号,我们需要跟踪棋子的位置,因为只有当对手棋子被重叠时,棋子才会进入内循环(36,38..)

标签: java android design-patterns


【解决方案1】:

List 应该可以正常工作。我觉得它很优雅。

如果对性能有一些总体需求;例如你正在实现一个需要探索大量替代动作的自动播放器,你可能会考虑别的东西。但对数据结构的要求将由您的游戏算法驱动,我们无法预测。

【讨论】:

  • 我需要由某个AI驱动的对手,它会决定下一步的行动。
猜你喜欢
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2012-04-22
  • 2015-02-28
  • 1970-01-01
相关资源
最近更新 更多