这是我第一次开发Android游戏。我想创建一个流游戏,其中特定节点必须仅以特定顺序连接。例如计算机将连接到调制解调器,然后调制解调器将连接到路由器(其基于网络的游戏)。到目前为止,我遇到的算法并不涉及特定的订单自由流。(请参阅this或this。)是否存在现有的算法? 附:我正在使用libGDX。
游戏将与此类似。
答案 0 :(得分:1)
您需要实现一个简单的有限状态机。
有关实施细节,您可以查看How to implement a FSM - Finite State Machine in Java
这必须集成到任何算法(由您推荐)中以检查有效性。
希望这会有所帮助。祝你好运。
答案 1 :(得分:1)
您将无法找到仅针对此特定问题创建的算法。您正在寻找的是搜索算法,例如BFS并修改它以在此游戏中使用。
在BFS中,您从一个单元开始并将有效的邻居单元添加到队列中并遍历此队列,直到到达目的地或队列为空(您没有到达目的地)。
对于这个游戏,首先你必须定义哪些邻居是有效的。有7种类型的细胞
empty cells : never valid
destination : always valid, end algorithm here
source: never valid, you don't want to move source square back
vertical tunnel: only valid if previous cell is also a vertical tunnel or one of modem, router, source
horizontal tunnel: only valid if previous cell is also a horizontal tunnel or one of modem, router, source
调制解调器和路由器单元将会有点棘手,在迭代队列时,您还需要推送当前路径的类型。当前路径最初将是“源”,如果您通过调制解调器,它将是“调制解调器”,如果您通过路由器,它将是“路由器”。考虑到这一点,路由器和调制解调器的规则是
modem: only valid if current path is source or modem
router: only valid if current path is modem or router