我需要在Android上实现一个黑白棋游戏。我已经实现了所有的游戏功能,但问题是我没有AI。事实上,每次电脑移动都是在能够获得最多棋子的位置上移动。
我决定实现一个Alpha-Beta剪枝算法。我在网上做了很多研究,但我无法得出最终结论如何做到这一点。我尝试实现了一些函数,但不能达到期望的行为。
我的棋盘存储在类Board中(在这个类中,每个玩家占据的棋子存储在二维int数组中)。我附加了一个小图表(对于它的外观方式,我感到抱歉)。
图表:https://docs.google.com/file/d/0Bzv8B0L32Z8lSUhKNjdXaWsza0E/edit 我需要帮助来弄清楚如何在我的实现中使用Minimax算法。
到目前为止,我所理解的是,我必须制作一个关于棋盘价值的评估函数。
为了计算棋盘的价值,我必须考虑以下元素: -自由角(我的问题是我只需要关注自由角,还是我可以在当前移动中获取的自由角?!这里有一个两难的问题)。 -棋盘的可行性:检查在当前移动后将可用于移动的棋子数量。 -棋盘的稳定性...我知道这意味着无法翻转的棋子数。 -移动将为我提供的棋子数量
我计划实现一个新的BoardAI类,它将以我的Board对象和深度作为参数。
你能告诉我如何实现这个AI的逻辑思路吗? 我需要一些关于递归计算深度的帮助,我不理解它是如何计算最佳选择的。
谢谢!
我决定实现一个Alpha-Beta剪枝算法。我在网上做了很多研究,但我无法得出最终结论如何做到这一点。我尝试实现了一些函数,但不能达到期望的行为。
我的棋盘存储在类Board中(在这个类中,每个玩家占据的棋子存储在二维int数组中)。我附加了一个小图表(对于它的外观方式,我感到抱歉)。
图表:https://docs.google.com/file/d/0Bzv8B0L32Z8lSUhKNjdXaWsza0E/edit 我需要帮助来弄清楚如何在我的实现中使用Minimax算法。
到目前为止,我所理解的是,我必须制作一个关于棋盘价值的评估函数。
为了计算棋盘的价值,我必须考虑以下元素: -自由角(我的问题是我只需要关注自由角,还是我可以在当前移动中获取的自由角?!这里有一个两难的问题)。 -棋盘的可行性:检查在当前移动后将可用于移动的棋子数量。 -棋盘的稳定性...我知道这意味着无法翻转的棋子数。 -移动将为我提供的棋子数量
我计划实现一个新的BoardAI类,它将以我的Board对象和深度作为参数。
你能告诉我如何实现这个AI的逻辑思路吗? 我需要一些关于递归计算深度的帮助,我不理解它是如何计算最佳选择的。
谢谢!