C++ QT开发人机象棋(大纲)

目录

 

1 系统需求分析:

1.1游戏简介:

1.2机器下棋史:

1.3研究内容:

1.4编译环境:QT

2 总体设计

2.1系统功能分析:

1.界面表示

2.鼠标点击

3.棋子走法

4.评估函数

5.搜索算法

6.剪枝算法

2.2系统功能模块划分与设计

 


 

1 系统需求分析:

 

1.1游戏简介:

象棋以充满趣味性的游戏形式兴起并延续至今,在近现代则作为体育项目添加了竞技因素,以及作为文化载体被传统中国文化及思想赋予了文化精髓。

象棋是由两人轮流走子,以“将死”对方将(帅)为胜的一种棋类运动,古今中外,象棋都有着广泛的爱好者。在国内,象棋经过近千年的实践,于北宋末定型成近代模式:32枚棋子,有河界的棋盘,将在九宫之中等等。南宋时期,象棋家喻户晓,成为流行极为广泛的棋艺活动。李清照、刘克庄、杨慎、唐寅、郎英等文学家,洪遵、文天祥等政治家,都嗜好下象棋。宫廷设的"棋待诏"中,象棋手占一半以上。

民间有称为"棋师"的专业者和专制象棋子和象棋盘的手工业者。象棋在国外尤其是在东南亚的侨胞和外籍华人中也广泛流传。这些地区和国家近年也都举行象棋比赛,而且都已分别成立了象棋总会或象棋协会。许多海外华侨、华人和港澳同胞把象棋看作是侨胞与祖国联系的桥梁和纽带,把开展象棋活动看作是炎黄后裔对自己民族文化的继承和发扬。

近几十年来,随着贸易和文化交往的不断发展,象棋在英、美、法、加拿大、德国等国家也发展了不少的爱好者。象棋正从它的发源地,经过亚洲,传播到世界各个角落。

1.2机器下棋史

20世纪80年代中期,卡内基梅隆大学的柏林纳开始用专用硬件来实现下棋机,他的成果 HiTech 马上成为最强的机器棋手。  这时来自中国台湾的许峰雄到卡内基梅隆大学计算机系跟随孔祥重读计算机体系结构方向的博士。 许峰雄的室友很快把他拉到 HiTech 项目帮忙设计一个硬件的评估函数,但许峰雄却和柏林纳关系不睦。 在资金有限的情况下,许峰雄和几个研究生利用业余时间快速开发出了 ChipTest,而 ChipTest 立即变成了 HiTech 的竞争对手,并受到柏林纳的打压。 许峰雄在计算机系也变成众矢之的,每次都是靠导师孔祥重的帮忙化险为夷。 ChipTest 的改进版“深思”(Deep Thought)1989年赢得弗雷德金二等奖:成为第一个国际象棋特级大师的机器棋手。随后 HiTech 也加入这个行列。 而此时 IBM 意识到“深思”的商业价值,于是劝说整个团队在毕业后加入 IBM,开发下棋机,把对手锁定为当时的世界冠军俄罗斯特级大师卡斯帕罗夫。 卡斯帕罗夫对机器下棋非常熟悉,他在屡次和机器对决后曾说:机器下棋没有洞见(insight)。 IBM 的外号叫 Big Blue,于是新的项目1996年被命名为“深蓝”(Deep Blue)。 1996年 ACM 年会的闭幕节目是“深蓝”对决卡斯帕罗夫,六局棋。“深蓝”旗开得胜,第一局就赢了老卡,最后还是老卡 4:2 赢得决赛。 此时老卡对“深蓝”刮目相看,他说机器对手不光有洞见,而且有几步简直像“上帝下的”。 第二年“深蓝”和老卡再战,老卡号称要捍卫人类的智力尊严。他赢了第一局,但随后则越来越保守,彻底输给“深蓝”。 1997年5月11日,老卡认输,“深蓝”成了第一位战胜当时世界冠军的机器。事后,卡斯帕罗夫回忆:第二局是关键,机器表现超出他的想象,它经常放弃短期利益,表现出非常拟人的危险。 在“深蓝”赢了卡斯帕罗夫之后,职业棋手并没有因此而改行,他们反而更多地依赖计算机来训练。机器作为教练,反而更快地帮助人类棋手进步。 从来就没有过这么多年轻棋手在年龄很小时就积分这么高,这都得益于计算机教练,因为过去的孩子从来就没有机会能和特级高手比赛。 现在两台个人电脑下棋,人已经看不懂它们在下什么。尽管如此,“深蓝”队员,同样毕业于卡内基梅隆大学的坎普尔仍然不认为机器有智能。 这其实是整个“深蓝”团队的意见,他们都不是人工智能出身,反而和同系的人工智能教授结下梁子。 “深蓝”获胜后,美国人工智能学会(AAAI)曾经组织过一个研讨会,对人工智能启发式搜索做出过杰出贡献的加州大学洛杉矶分校教授科夫曾不满“深蓝”团队的立场。

1.3研究内容

人工智能的基本思考方法是穷举法,即通过对所有可能的招法的演化结果进行比较,最后选择出一个最好的招法。这种比较一定是越深越好。我们知道,平日里象棋水平越高的人,能够对战局演化看得越远,比如看到五步棋。计算机也一样,走出一个棋子后,便生成一个“局面”;在这个新的局面下,又有38种可能的棋子走法,无论选择其中哪一种,都会再次生成一个更新的局面。每一次考虑一个棋子的走法时,如果将所有这些变化列起来,就会形成一棵“树”,主干上有38个分支,每个分支上再有38个分支,依此类推,共有120层(中国象棋一般可以走120步)。这就是“博弈树”。计算机要做的就是比较最后一层的结果,选择其中一个最好的结果,然后逆推,找到本局面最好的一个走法。

1.4编译环境QT

 

2 总体设计

 

2.1系统功能分析

1.界面表示

2.鼠标点击

3.棋子走法

4.评估函数

5.搜索算法

6.剪枝算法

2.2系统功能模块划分与设计

C++ QT开发人机象棋(大纲)_第1张图片

你可能感兴趣的:(C++)