摘要: 之前我们已经讲了实现一个中国象棋软件的所有要素,本篇我们只是粗略地建一个工程再添加一点文件使得我们能看到程序的运行情况如何。 在界面完成之前,我先建了一个Win32控制台项目(学生朋友们对这个最熟悉也最容易理解)。根据前面所讲的我们已经有了CChessDef.h CChessMove.h CChes 阅读全文
posted @ 2017-01-06 22:21 Yao,Mane 阅读(688) 评论(0) 推荐(0) 编辑
摘要: 前面已经讲过了棋局表示、着法生成、搜索算法(包括搜索辅助), 在象棋程序中如果说搜索算法是心脏,那么局面评估就是大脑。搜索算法负责驱动整个程序,而局面评估则负责对搜索的内容进行判断评价。因而搜索与局面评估是整个程序的核心。 首先,先介绍一下在局面评估中需要考虑的因素。就不同的棋类可能要考虑的因素略有 阅读全文
posted @ 2017-01-06 22:20 Yao,Mane 阅读(792) 评论(0) 推荐(0) 编辑
摘要: 对于棋类软件的搜索算法经前人的努力已形成了较为成熟的Alpha-Beta搜索算法以及其它一些辅助增强算法。所以小生在自己的程序中直接借鉴了Alpha-Beta搜索算法并辅以了历史启发。对此两者王小春的《PC 游戏编程(人机博弈)》和ElephantBoard的主页 http://www.elepha 阅读全文
posted @ 2017-01-06 22:19 Yao,Mane 阅读(596) 评论(0) 推荐(0) 编辑
摘要: 既然Alpha-Beta搜索算法是在“最大-最小”的基础上引入“树的裁剪”的思想以期提高效率,那么它的效率就取决于树的结构——如果搜索了没多久就发现可以“裁剪”了,那么需要分析的工作量将大大减少,效率自然也就大大提高;而如果直到分析了所有的可能性之后才能作出“裁剪”判断,那此时“裁剪”也已经失去它原 阅读全文
posted @ 2017-01-06 22:19 Yao,Mane 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 我们的程序需要让电脑能够在轮到它走子的时候执行一个它认为对它最有利的着法,那前提就是它要有诸多(也可能是唯一)可供选择的着法,提供所有可选着法的“清单”就是我们的着法生成器所要完成的。之后用搜索函数来搜索“清单”,并用局面评估函数来逐一打分,最后就可以选择“最佳”着法并实施了。 在着法生成器中,我采 阅读全文
posted @ 2017-01-06 22:18 Yao,Mane 阅读(548) 评论(0) 推荐(0) 编辑
摘要: 对于棋盘的表示当前比较先进的思想是“位棋盘”。“位棋盘”用于国际象棋非常便捷,因为国际象棋的棋盘正好有64个格子,可以将一个棋盘的信息用一个64位的变量来表示。其基本思想就是用位上的值是1或0来表示棋子在棋盘相应位置上的存在与否,这样做的好处是可以通过位操作运算来加快局面评估和着法生成的速度。当用于 阅读全文
posted @ 2017-01-06 22:17 Yao,Mane 阅读(425) 评论(0) 推荐(0) 编辑
摘要: 2005年6月我系第二批科技小组的项目正式确定为实现一款中国象棋对弈软件。基本功能包括人机对战、网络对战。我负责开发人机对战的引擎部分,也就是让计算机下棋。经过了暑假整整两个月的学习与实践,我终于初步完成了程序,虽然电脑的下棋水平实在不敢恭维,但好歹也是我心血所成,所以就苟且将其命名为scCChes 阅读全文
posted @ 2017-01-06 22:16 Yao,Mane 阅读(699) 评论(0) 推荐(0) 编辑