2010-05-22 147 views
2

对于基于回合的游戏(网格类似于国际象棋棋盘),我有一个方形网格,但是根据您是否将对手棋子至少重叠了一次,游戏中的棋步是不同的。如何在回合制游戏中存储游戏棋子的路径?

也就是说,如果你还没有重叠在最外面的网格(击败任何对手的走卒)如下

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

如果你舔你的对手的棋子至少一次,然后你到达回家,这样。所有他的所有棋子到达“家”的球员首先获胜。

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

黄色的那些是藏身处,即对手棋子和玩家的棋子都住进了同一电网,这是不被认为是研磨(对手)。该搭接棋子将返回到它的起点。

现在问题是,什么是有效的方式来存储所有pawn的路径。我们将有4个pawn的玩家和4个对手pawn。

有没有什么模式以优雅的方式存储这样的静态信息?

感谢您的时间

+0

棋子是否总是围绕游戏棋盘在设定的路径上移动?每个空格是否从开始到结束顺序编号(即使编号未显示在屏幕上,它可能在数据结构中)?看上面的例子,如果你只是存储了编号空间的列表(例如45,48,6,0,...),那么棋子似乎会任意移动,而不是朝着某个目标移动。如果空格按顺序编号,则很容易确定一个棋子是否搭叠(超越)另一个棋子,因为lapper的最近位置将高于lapee的最近位置。 – 2010-05-22 01:41:29

+0

是的,棋子总是在设定的路径中移动。 空间内部编号,我们需要跟踪典当位置,因为只有当对手典当被重叠时,典当才会进入内部循环(36,38 ..) – panzerschreck 2010-05-22 15:42:12

回答

2

一个List应该只是罚款。这对我来说似乎很优雅。

如果有一些首要的性能需求;例如你正在实现一个自动播放器,需要探索一个巨大的替代动作树,你可能会考虑其他的东西。但是数据结构的要求将会受到您的游戏算法的启发,我们无法预测这一点。

+0

我需要由某个AI驱动的对手,它会决定下一步行动。 – panzerschreck 2010-05-22 15:42:58