可能重复:
What Algorithm for a Tic-Tac-Toe Game Can I Use To Determine the “Best Move” for the AI?
我已经为2名玩家创建了一个tic tac toe游戏,即互相对战。现在我已经计划实施相同的游戏,但是用于对抗计算机。那么有人可以提出一些很好的算法或想法来实现它吗?
答案 0 :(得分:4)
由于游戏非常简单,您可以使用搜索树。这是一棵树,可以替代“你的行动”和“敌人的行动”。敌人总是挑选最适合他们的东西,而且你总是挑选最适合自己的东西。对于每个棋盘位置,如果最佳比赛分别导致赢/输/平局,则将其评为“胜利”/“失败”/“TIE”。执行深度优先搜索(或任何搜索)并选择分支。这基本上是复杂的国际象棋程序击败大师的工作方式(虽然它们是高度优化的并且并行运行在优秀的硬件上)。这称为minimax algorithm。
或者,您可以手动编码所有最佳动作(通过旋转和翻转棋盘将其与已知动作进行比较的例程)。只有500种可能性。
然而,由于tic-tac-toe是一款解决过的游戏,因此它会相当无聊。如果计算机以最佳状态播放,计算机将始终与您绑在一起。由于tic-tac-toe只对5岁儿童构成挑战,因此您可能会考虑您的游戏受众:让计算机做出随机不失动作可能是合理的。那么人类玩家至少有机会。
答案 1 :(得分:0)
像ninjagecko已经建议的那样,搜索树对于编码来说是直截了当的。
但正如使用搜索树比编写所有最佳动作更有趣,我认为尝试机器学习方法会更有趣。
制作一个使用reinforcement learning的程序会很酷。