我正在尝试创建一个经典的3 * 3棋盘游戏。
这是两个玩家游戏&看起来像http://tinypic.com/view.php?pic=34o4mjp&s=5,很容易玩。胜利的条件在某种程度上类似于井字游戏。实际上我甚至都不知道那个游戏的确切名称,但是当我还是孩子的时候我在学校里玩过它。我把它命名为块行。在这个游戏中玩家每人有3个街区。每个玩家可以在他/她的回合中移动一个区块。最后,除了他/她自己的一方之外,能够沿着对角线,水平线或垂直方向制作线块的人将成为赢家。 我已经为java中的两个玩家编写了这个游戏,但我遇到了AI的问题。
任何人都可以建议我可以在这个游戏中使用哪种AI算法?这个游戏的确切名称是什么?
我搜索了两个玩家的AI算法,发现minimax算法可以实现,但我没有得到如何在我的情况下实现minimax。
答案 0 :(得分:2)
这里的极小极大是一种方法 这种游戏属于具有完整信息的2人游戏类别,因此minimax是这里的经典解决方案。您还可以考虑使用一种称为“alpha-beta修剪”的技术进行优化。
实际上它与传统的井字游戏并没有多大差别。 您所需要的只是找到一个良好的启发式函数来估计您当前的状态。 AI程序的强度取决于您的启发式功能。 其余的都是经典的minimax算法实现。
希望这有帮助
答案 1 :(得分:1)
另一张海报建议Minimax,是的,这是这类棋盘游戏的经典解决方案。但在这种情况下,完全没必要。这个游戏只有1680个可能的棋盘状态(对于2个玩家来说可以是x2),所以你可以轻松地对游戏树进行蛮力搜索,然后解决问题。它
您可以在运行时执行此操作,或者首先预先计算"完美"移动每个可能的板状态,将它们存储在一个表中,然后在运行时进行表查找。