我知道这个问题已经被问了很多次,我也查找了其他代码,但是大部分看起来都不完美(从不输)并且不够简洁、优雅和高效。我无法决定哪种解决方案适合这种描述。
我看到的解决方案有:
(1) 使用带有alpha-beta剪枝的minimax算法。对于这样一个简单的游戏来说,这似乎过于复杂了吧?如果不是,那么我需要进行大量的硬编码或者我误解了算法吗?
(2) 使用维基百科上的伪代码策略编写代码...我不确定如何实现这个。例如,它只是说“检查叉子”。大多数这些检查是否可以通过拥有一组获胜线并检查它们是否填充来完成?如果不是,有人能给我提示吗?关于如何实现此处伪代码中提出的检查的数据结构或任何基本提示:http://en.wikipedia.org/wiki/Tic-tac-toe#Strategy 。我还看到了将“X”方块和“O”方块赋予一个数字值,然后使用总和来决定胜者的算法,但我不明白为什么这特别有用。
还有其他合理的解决方案吗?
我看到的解决方案有:
(1) 使用带有alpha-beta剪枝的minimax算法。对于这样一个简单的游戏来说,这似乎过于复杂了吧?如果不是,那么我需要进行大量的硬编码或者我误解了算法吗?
(2) 使用维基百科上的伪代码策略编写代码...我不确定如何实现这个。例如,它只是说“检查叉子”。大多数这些检查是否可以通过拥有一组获胜线并检查它们是否填充来完成?如果不是,有人能给我提示吗?关于如何实现此处伪代码中提出的检查的数据结构或任何基本提示:http://en.wikipedia.org/wiki/Tic-tac-toe#Strategy 。我还看到了将“X”方块和“O”方块赋予一个数字值,然后使用总和来决定胜者的算法,但我不明白为什么这特别有用。
还有其他合理的解决方案吗?