TicTacToe AI - 计算机获奖移动java

时间:2014-03-22 14:12:46

标签: java artificial-intelligence

有没有办法在TicTacToe上使用for循环获得AI的获胜动作。因此,检查彼此相邻的任何两个按钮是否具有值X或O,然后使第三个具有相同的值以使AI获胜。

使用for循环遍历3×3按钮的数组,并检查彼此相邻的任何两个按钮是否具有相同的值。

我已经尝试了这一点,但不确定它是否正确,因为它不会使计算机无法取得任何获胜动作。

2 个答案:

答案 0 :(得分:0)

为了便于理解,您可以为行/列/对角线分别创建多个循环: 在一行/列/对角线中计算X或O,如果等于2,则在剩余字段中添加第三个(如果它为空)

有很多方法可以达到你想要的效果。你甚至可以强行执行每一个可能的行动,计算获胜结果并选择最有可能的结果。

另一个简单的方法是编写一个方法,如果它阻止对手获胜的移动和/或导致自己的获胜动作,将检查每个领域。

答案 1 :(得分:0)

常见的A.I.游戏中的算法是The Min/Max Algorithm基本上,玩家向前看以评估由每个可能的事件序列产生的游戏状态,并选择移动以最大化他们获胜的机会。

对于井字游戏,您可能需要考虑从玩家开始并查看可能遵循给定状态的所有可能的子状态。您可以评估一些分数,例如移动是否会导致您进入2 x排队的状态。然后你将这个分数传播到你的树上,这样当前的玩家就会做出明智的决定。'

Min-max假设你的对手打得很完美,所以你有时会遇到问题。

有关A.I.的详细描述和tic-tac-toe问题检查Artificial Intelligence: A Modern Approach第5章,对抗性搜索,涵盖游戏,特别是指井字游戏。