五子棋人工智能人机博弈毕业设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五子棋人工智能人机博弈毕业设计
目录
第1章引言 (3)
§1.1人工智能 (3)
§1.2人机博弈和五子棋 (3)
§1.3 Visual C++ (4)
第2章需求分析 (5)
§2.1使用围要求 (5)
§2.2功能要求 (5)
§2.3系统平台要求 (5)
第3章人机界面设计 (6)
第4章面向对象分析 (9)
§4.1对象设计 (9)
§4.2动态模型 (10)
§4.3功能模型 (10)
第5章面向对象设计 (12)
§5.1类设计 (12)
§5.2控制流程 (13)
第6章详细设计及编码 (15)
§6.1全局数据 (15)
§6.2游戏循环 (15)
§6.3界面设计及事件处理 (15)
§6.4人类玩家的Think操作 (17)
第7章计算机智能设计 (18)
§7.1棋局估值 (18)
§7.2极大极小值算法 (19)
§7.3 Alpha-beta算法 (22)
§7.4 Alpha-beta算法的窗口效应 (26)
§7.5极小窗口搜索/PVS算法 (27)
§7.6预估排序和历史启发 (28)
§7.7有限围限定 (31)
§7.8多核优化 (31)
第8章总结结论 (33)
§8.1各算法效率对比 (33)
§8.2成果与不足 (34)
参考文献 (35)
致谢 (36)
第1章引言
§1.1人工智能
提到人工智能,可能最著名的便是1997年超级计算机“深蓝”战胜国际象棋冠军卡斯帕罗夫的事,可以说“深蓝”的获胜是人工智能影响力的一个里程碑。
对于什么是人工智能,有很多定义,我认为就是能自动完成人类所能完成的一些思维活动。如果从这个意义上说的话,计算机学科所要解决的所有问题都与人工智能有关。它的发展历史和计算机科学的发展历史是联系在一起的,但也不仅仅局限于计算机科学,也涉及到心理学、哲学、语言学、医学等很多门学科。它所包含的容有:知识表示、自动推理和搜索方法、机器学习和知识获取、知识处理系统、自然语言理解、计算机视觉、智能机器人、自动程序设计等方面。
§1.2人机博弈和五子棋
人机博弈就是人和计算机下棋,其重点在于计算机如何实现对弈,它是人工智能研究的一个重要分枝,五子棋是一种对弈游戏,本设计的目的就是通过五子棋这种对弈游戏初步探索实现博弈算法,为将来的人工智能研究打下一个基础,其实现方法可以从以下几方面概述:
一、棋盘状态用一种数学模型来表示当前棋局的状态,不同的对弈游戏有不同的表示方法,本设计用五子棋这种游戏来实现,它的棋盘状态比较简单,可以用一个15*15的二维数组表示15*15的棋盘,某棋盘上位置的状态就用该数组中单元的数字表示,比如1表示黑子,0表示白子,-1表示空位。
二、对弈规则每种对弈游戏都有不同的规则,规定了棋子的走法(如象棋)或者能下子的位置以及胜负的判定。五子棋的规则很简单,如果不考虑禁手,任意空位都可以放棋子,只要一方有五个棋子连成一线,则判胜。
三、搜索技术要让计算机在下棋中有智能,搜索技术是至关重要的,简单的说就是让计算机试着某步走法,这一步走了之后,再往后走若干步,按照某种规则给这一步评分,最后,在所有走法中选择一个相对最佳的走法。
四、棋局估值就是对某一种棋盘局面的优劣作出评价,简单地就是说走某一步棋后,这一步棋走得好不好。它在博弈技术中也是很重要的,从某种意义上来说,搜索也是为了估值,或者说对估值作修正。
§1.3Visual C++
本次的开发工具为Microsoft visual c++ 2005,它是微软公司推出的win32的开发工具,本次实现之所以选用Visual C++作为开发工具,除因个人使用习惯外,主要是它生成的代码高效,具有灵活方便的类管理,以及界面设计的可视化特点。另外,在Visual C++ 2005中引入了OpenMp的支持,OpenMp为快速开发具有多核优化的程序提供简单方便的支持,使得博弈程序更加高效。
第2章需求分析
§2.1使用围要求
五子棋规则简单,男女老幼都可以玩,不但能让人们在对弈过程中得到娱乐,而且还能开发智力。
§2.2功能要求
1、支持人机对战。
2、能设置计算机智能等级。
3、能保存棋局状态,同时也能读入上一次保存的棋局状态,并且能够接着上一次继续下棋。
4、能悔棋,即玩家在下错子后能回到上一步。
5、背景音乐和下棋音效。
§2.3系统平台要求
编程语言:C++
操作系统:windows
开发工具:microsoft Visual C++
第3章人机界面设计
图3.1 五子棋程序界面
如图3.1,在左边的为15×15的棋盘,右边的“黑子”和“白子”下接列表框设定持黑子和白子的玩家类型,各有三项,分别是“人”,“计算机”,“当选择“人”后,就可以用鼠标在棋盘下放该类型的棋子,当为“计算机”,则由计算机自动产生走法并在棋盘上下该种类型的棋子,并且会弹出一个选择智力级别的对话框。
图3.2 计算机智力等级设定对话框
在玩的过程中,如果不想玩了,可以把当前棋局保存下来,按保存按钮,此时弹出保存棋局对话框
图3.3 保存棋局对话框
要载入以往的棋局继续玩,点击载入按钮,此时显示载入棋局对话框,选择以往的棋局文件即可。
图3.4 打开棋局对话框
如果不想玩此局了,则可按新局按钮,此时弹出“确认新局”对话框让用户确认:
图3.5 重新开始对话框
选择是将开始新局,否返回到旧局继续下。
如果退出程序,此时显示“确认退出”对话框。
图3.6 是否退出对话框
选择“是”按钮则退出,“否”继续下。