五子棋毕业论文--人工智能课题 下载本文

内容发布更新时间 : 2024/5/18 10:32:08星期一 下面是文章的全部内容请认真阅读。

图 2.14 在线聊天

图 2.15 输赢判定

以上的只是进行了集成的初步测试,各个模块的单元测试都在编写好代码后测试通过的。严格来说这样的测试很不严谨,不过从图中可以看出本程序网络部分实现了基本功能。

3.2 人机部分:

选择游戏菜单下的人机对战的初级选项,以下中白棋为电脑方。

26

图2.16具备“防守” 图2.17 具备“进攻”

选择中级选项:

图 2.18具备“防守” 图2.19 具备“进攻” 选择高级选项:

图 2.20具备“防守” 图2.21 具备“进攻”

这个部分主要测试了人机部分,可以很明显的看出每个级别都拥有了基本的

“攻防”功能。限于篇幅,不能够从大量的实例中提取出可以说明各个等级之间的差别的例子。不过有一点无庸质疑的是,算法的搜索深度加深预测的步数也就越多,也就越智能!理想的状态就是完整搜索全部的步数。这里将搜索深度分为2,3,4对应于初级,中级,高级。

从上面的测试中,可以看出两个主要模块基本符合了要求。其他的没有列出细节部分也通过了测试!

27

第四章.总结部分

4.1

系统总结

在第三章节的测试部分,系统已经通过基本的测试。基本上完成了本次设

计的预期目的。特别是单机部分实现的不同的等级功能,将深度达到4的搜索通过优化,使得其响应的时间基本符合了要求;网络部分通过派生两个Csocket类CClientSocket 和CserverSocket。用于实现客服端和服务端的网络通信,并且程序中均加入了这两个对象,这样这个程序实现了通过不同菜单选项既可作为服务端又可以作为客服端。整个设计的过程按照软件工程思想进行开发;尝试用了面向对象的编程思路,将各个部分进行了抽象。如Cmatch类,抽取出了棋盘拥有的属性和操作,在如Ccomputer类,将电脑方抽象成一个类,向外部提供人机接口。

4.2

不足说明:

界面设计不够完善美观,常用的一些功能应该要放在界面上而不是在菜单里,这样更符合UI设计。

可能的话增加一些背景音乐功能;可以增加保存棋局,以便于调用观看。 Cmessg类定义了过多的信息,把全部的通信数据都放到了这个类中,显然存在操作的粒度变大,存在过多的冗余判断,加重了通信负载。应该再继续细分,这样才更加合理。

人机算法部分中的评估函数,也需要调整使得其更加的智能。算法有个缺点就是当棋盘上的棋子相当的时候,比如双方都存在活四,那么如果调用初级算法,它会调用评估函数向前预测,算出双方的值相当。于是就不选择最后一步连五。可以说这是很大的败笔,不过可以写个函数进行修补。

总体感觉系统可维护性很差,应该尽可能的使用常量代替具体数据。这样更利于后期的维护,避免牵一发而动全身。

4.3

致谢:

首先感谢我的毕业指导老师吴拥民导师在这段时间内给予我的关照和指导,使得我能够在这么仓促和繁琐的时间里,放平心态,认真的完成了本次毕业设计。当我对自己确定的题目有些模糊不定的时候,是他坚定了我信心,并且给出了三种等级模式的提议。再次感谢他!

感谢我的母校XX四年来的培养;感谢我的老师们孜孜不倦的教诲,是他们带我进入了计算机科学的世界。

感谢我的实习公司―XX软件工程公司,给我提供了宽松的实习环境,并且腾出时间给我完成毕业设计。

最后感谢我的父母,亲人和朋友们在一直默默的在背后支持和鼓励我。生命中因为有了你们才变得这么精彩。

28

参考文献: [1]

丁展 著.Visual C++ 游戏开发技术与实例.北京:人民邮电出版社,2005.02 [2]

张越 著.Visual C++ 网络程序设计实例详解.北京:人民邮电出版社,2006.02 [3]

高济、朱淼良、何钦铭 等著.人工智能基础. 北京:高等教育出版社, 2002.08

29