我知道这已经被问了很多,我已经搜索了其他代码,但我所看到的大部分内容似乎都不是完美无缺的(永远不会丢失),而且简单、优雅和高效。而且我无法决定哪种类型的解决方案适合该描述。
我见过的解决方案是:
(1) 使用带有 alpha-beta 剪枝的 minimax。这对我来说似乎很复杂,对于这样一个简单的游戏来说可能是不必要的?是不是太复杂了?如果不是,我需要做很多硬编码还是我误解了算法?
(2) 使用维基百科的伪代码策略编写代码......我不完全确定如何实现这一点。例如,它只是说“检查分叉”。这些检查中的大多数是否会通过拥有一系列winningLines并检查它们是否会被填写或类似的东西来完成?如果没有,有人可以给我关于什么数据结构的提示或关于如何实现伪代码中提出的检查的任何基本提示:http ://en.wikipedia.org/wiki/Tic-tac-toe#Strategy 。我还看到算法为“X”方和“O”方提供数值,然后使用总和来决定获胜者,但我不明白为什么这特别有用。
还有其他合理的解决方案吗?