我正在尝试创建一个经典的3*3棋盘游戏。
这是一个双人游戏&看起来像http://tinypic.com/view.php?pic=34o4mjp&s=5,非常容易玩。获胜的条件在某种程度上类似于井字游戏。事实上,我甚至不知道这个游戏的确切名称,但我小时候在学校玩过。我把它命名为line of block。
在这个游戏中,玩家每个人有3个积木。每个玩家在他/她的回合中可以一次移动一个街区。最后,除了他/她自己的那一方外,能够在对角、水平或垂直方向上做出积木线条的人将是赢家。我已经用java为两个玩家编写了这个游戏,但我在AI方面遇到了问题。
谁能建议我在这个游戏中使用哪种AI算法?这个游戏的确切名称是什么?
我搜索了两个玩家的AI算法,发现minimax算法可以实现,但我不知道如何在我的情况下实现minimax。
发布于 2012-02-26 22:12:58
这里的极小极大是一种方法,这类游戏属于完全信息的两人博弈的范畴,所以极小极大是这里的经典解决方案。您还可以考虑一种称为"alpha-beta剪枝“的优化技术。
实际上,它与经典的井字游戏并没有太大的区别。你所需要的就是找到一个好的启发式函数来估计你的当前状态。AI程序的强度将取决于您的启发式函数。其余的都是经典的极大极小算法实现。
希望这能有所帮助
发布于 2012-02-26 22:33:30
另一张海报建议Minimax,是的,这是一个经典的解决方案,像这样的棋盘游戏。然而,在这种情况下,这是完全不必要的。这个游戏只有1680个可能的棋盘状态(轮到2个玩家使用x2),所以你可以很容易地对游戏树进行暴力搜索并“解决”它。
您可以在运行时这样做,或者首先为每个可能的电路板状态预先计算出“完美”的移动,将它们存储在一个表中,然后在运行时进行一个表查找。
https://stackoverflow.com/questions/9453720
复制相似问题