WEB开发网
开发学院软件开发VC 利用SDK实现智能五子棋 阅读

利用SDK实现智能五子棋

 2006-07-23 11:33:53 来源:WEB开发网   
核心提示:本文示例源代码或素材下载 网上有很多的实现五子棋的算法,如利用规则法,利用SDK实现智能五子棋,递归法,博弈树法来实现五子棋的, 反对角线同样为 36,则所有的胜利组合为 36 * 2 + 60 * 2 = 192 种胜利组合,上次我写了一篇利用SDK实现迷宫算法的文章——“

本文示例源代码或素材下载

网上有很多的实现五子棋的算法,如利用规则法,递归法,博弈树法来实现五子棋的,上次我写了一篇利用SDK实现迷宫算法的文章——“老调重提,利用 SDK 实现迷宫算法”,这次还是同样的题目,老调重提,我利用的是规则法来实现五子棋的智能。不过我个人认为还是博弈树法还是简洁。如果读者对博弈树有兴趣的,可以重读数据结构中的树结构的实现这一部分!

这是利用SDK实现的五子棋程序运行界面:

这里我讲出我实现的思路:

第一步,计算出一个棋盘的五子棋的所有胜利组合。

第二步,计算出玩家的下棋状态,电脑将会根据玩家的状态而采取进攻或防守。

第三步,根据第二步的运行情况,而出现三种结果,玩家获胜,电脑获胜,和局。

第一步,计算胜利的组合

从图中可以看出,只要五个棋子连续成一直线就可以胜利,这样我们就可以根据这样的规则计算出所有的胜利组合,利用组合运算可以算出一个10 * 10的棋盘的胜利组合可以有192种。即这样计算,每一行有十个格,计算出连续的五个格的组合,10个格中无论怎样已经有四个格连续的了,剩下的六个格中每一个都会是连续的组合,所以C6.1 = 6,共有6种胜利组合,10行共有 60 种胜利组合,10列中也会有 60 种胜利组合, 对角线则这样计算, 从正对角线开始, 其组合成直线的格可以有 10, 9, 8, 7, 6, 5, 剩下的不足五格,不可能构成胜利组合 C(10 - 4).1 = 6, C(9 - 4).1 = 5, C(8 - 4).1 = 4, C(7 - 4).1 = 3, C(6 - 4).1 = 2, C(5 - 5).1 = 1,由于对称,即对角线有 6 + ( 5 + 4 + 3 + 2 + 1 ) * 2 = 36, 反对角线同样为 36。则所有的胜利组合为 36 * 2 + 60 * 2 = 192 种胜利组合,玩家和电脑的所有获胜都会在这些组合中。

1 2 3  下一页

Tags:利用 SDK 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接