如何为Windows手机桌面游戏编写简单的AI?

时间:2012-02-22 02:55:11

标签: c# .net windows-phone-7 artificial-intelligence

这样的事情:

enter image description here

我不知道如何为此编码,因为我只编写了非游戏应用程序。例如,如何确定玩家移动后的最佳动作?我不需要完美的动作,只需要足够的挑战。

我不知道是否必须扫描所有可能的动作等。在如图所示的游戏中,可能的移动次数非常有限,对吧?所以我可以全部计算出来。但我不确定哪一个会更好,等等。

1 个答案:

答案 0 :(得分:6)

在像tic-tac-toe这样的小型简单游戏中,您可以构建一棵树,其中:

  • 每个节点都是董事会职位
  • 每个叶子节点是一个完成的游戏,得分为+1是X获胜,如果O获胜则为-1,抽奖为0
  • 每个子节点都是从其父节点合法移动的结果

然后X正在搜索将最大化最小结果的移动,知道O将搜索(在他的后续转弯处)移动,这将最小化最大结果,知道X将搜索(在他随后转向那个对于将要......的举动。

这是minimax算法。

在Tic-Tac-Toe中,树只能获得9层深度,如果你想要光滑,你可以利用一些板对称性并保持计算和数据结构的可管理性。

请注意,对于更复杂的游戏,这会因某种原因而失败(国际象棋是确定性的,但是太大而无法处理这种方式;步步高需要概率技术等),但许多方法都是这个主题的变体。