【发布时间】: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