这样的事情:
我不知道如何为此编码,因为我只编写了非游戏应用程序。例如,如何确定玩家移动后的最佳动作?我不需要完美的动作,只需要足够的挑战。
我不知道是否必须扫描所有可能的动作等。在如图所示的游戏中,可能的移动次数非常有限,对吧?所以我可以全部计算出来。但我不确定哪一个会更好,等等。
答案 0 :(得分:6)
在像tic-tac-toe这样的小型简单游戏中,您可以构建一棵树,其中:
然后X正在搜索将最大化最小结果的移动,知道O将搜索(在他的后续转弯处)移动,这将最小化最大结果,知道X将搜索(在他随后转向那个对于将要......的举动。
这是minimax算法。
在Tic-Tac-Toe中,树只能获得9层深度,如果你想要光滑,你可以利用一些板对称性并保持计算和数据结构的可管理性。
请注意,对于更复杂的游戏,这会因某种原因而失败(国际象棋是确定性的,但是太大而无法处理这种方式;步步高需要概率技术等),但许多方法都是这个主题的变体。