【发布时间】:2012-02-22 02:55:11
【问题描述】:
类似这样的:
我不知道如何为此编写代码,因为我只编写了非游戏应用程序。例如,在玩家下手后,您如何确定最佳着法?我不需要完美的动作,只要有足够的挑战性。
我不知道我是否必须扫描所有可能的动作等等。在如图所示的游戏中,可能的动作数量非常有限,对吧?所以我可以把它们都计算出来。但我不确定哪一个会更好,等等。
【问题讨论】:
标签: c# .net windows-phone-7 artificial-intelligence
类似这样的:
我不知道如何为此编写代码,因为我只编写了非游戏应用程序。例如,在玩家下手后,您如何确定最佳着法?我不需要完美的动作,只要有足够的挑战性。
我不知道我是否必须扫描所有可能的动作等等。在如图所示的游戏中,可能的动作数量非常有限,对吧?所以我可以把它们都计算出来。但我不确定哪一个会更好,等等。
【问题讨论】:
标签: c# .net windows-phone-7 artificial-intelligence
在像井字游戏这样的小型简单游戏中,您可以构建一棵树,其中:
然后 X 正在寻找将最大化最小结果的移动,知道 O 将搜索(在他随后的回合)将最小化最大结果的移动,知道 X 将搜索(在他随后的轮到那个) 的举动将...
这是极小极大算法。
在井字游戏中,树只能达到 9 层深度,如果您想要更流畅,可以利用一些棋盘对称性并保持计算和数据结构的可管理性。
请注意,对于更复杂的游戏,这将因某种原因而失败(国际象棋是确定性的,但太大而无法以这种方式处理;西洋双陆棋需要概率技术等),但许多方法都是这个主题的变体。
【讨论】: