ImageVerifierCode 换一换
格式:DOCX , 页数:37 ,大小:113.29KB ,
资源ID:5754471      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5754471.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(五子棋人机对弈系统vc++Word文件下载.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

五子棋人机对弈系统vc++Word文件下载.docx

1、人工智能,计算人机对弈,五子棋,算法AbstractArtificial intelligence is a rapidly developing new, integrated a strong Frontier Science. It is with bio-engineering, space technology has been listed as 21 in the world along with the three cutting-edge technology. Its central task is to study how to make the computer do

2、that in the past to rely on human intelligence to do. AI is currently regarded as the focus of the developed countries included in this cars high-tech development projects invested tremendous human and material resources. Man-machine chess computer is one of them. As a human study of an important br

3、anch of intelligence, the computer game to test the level of an important aspect of the manual. Its research in artificial intelligence has resulted in many important methods and theories to produce a wide range of social impact and academic impact. Man-machine chess game Renju in one of the compute

4、r. To study the computer algorithm, we can see the beginning of artificial intelligence shadow, but also help us to human brain development. Backgammon invented in China, and the research it can allow more foreigners to understand and help to promote Chinas traditional culture. KeyWords :Artificial

5、intelligence , Man-machine chess computer , Man-machine chess,algorithm目 录摘要Abstract第一章 概述11.1背景分析11.2国内外现状2第二章 需求分析32.1 需求分析32.2 性能需求32.3 系统平台需求32.4数据流图及数据字典4第三章 总体设计53.1 系统流程图53.2系统分析5第四章 系统实现114.1界面实现114.2智能计算实现12第五章 系统维护305.1 系统测试305.2 系统维护31第六章 总结31参考文献33致谢34第一章 概 述当电脑进入我们的生活中,许多与相关学科都欣欣的向上发展。典

6、型的有电子商务、电子邮件等。当然也有人智能了。人们在惊叹机器人高效的工作时,也会想起自己聪明的一面。人工智能也这方面也就深受我们喜爱。1.1背景分析五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“连珠”,英译为“Ren-ju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。五子棋不仅能增强思维能力,提高智力,而且变化多端,非常富有趣味性和消遣性,因此为人民群众所喜闻乐见。另一方面,人工智能也在最近几年发展迅速。人们不断的研究出机器人之类的,使它能胜任人们能做的一些复杂的

7、事,或是一些人们不适宜做的事,如水下探测等。而随着人们工作的加大,运动的时间也越来越少,大部分呆在家里或是工作的地方。这样人们就通过上网、购物等之类的事来取代生活中的不足。当然也有一部分群体在玩游戏之类的了。而五子棋由于其经典、易学等。深受人们的喜爱。人们在玩的同时也增加了自己的智慧。1任务提出开发者:九江学院信息科学与技术学院用户类型:各类棋牌游戏爱好者用户特点:玩者只要了解五子棋的几条规则,能用基本的windows xp操作就能玩此系统。2系统目标系统目标是总体设计的根据,是系统具体实现的前提,本系统将达到以下目标:(1) 便于一般懂五子棋群体。(2) 便于新手玩1.2 国内外现状国内外研

8、究五子棋的算法不少。有递归法、二叉树等。当然我所讨论的是一般的算了法。无论何种算法,其大体遵循两条原则:1.使规则更加自然流畅,更容易被人接受。2.使棋的内容更加丰富多彩。而对于五子棋来说,所面临的困境归根结底是来自于其最本质的特点,也是目前一切规则的共同之处:连五终局(注意是连五终局而不一定是连五获胜,因为连五一方有可能违反长连禁手而被判负)。这个特点产生的结果就是使很多着法绝对化,从而极大地缩减了棋局的变化空间。当别的棋类中的棋子在大多数时间里都可以在棋盘上自由驰骋时,五子棋的棋子却经常为了应付对方的冲四和活三而不得不疲于奔命。 计算机对不同棋类研究程度的对比很能说明问题;对中象和国象的研

9、究也足可匹敌人类中的顶尖高手;而对五子棋则动辄是“地毯终结”,以摧腐拉朽之势把这片领域中的未知之处一个又一个无情碾碎。不可否认这也是很多人认为五子棋“简单低级”的一个重要原因。面对这样的窘境,有的人提出一种大胆的设想,认为既然“连五终局”是造成五子棋变化简单的罪魁祸首,那么就应该将其摒弃,用其它的方法比如说看最后谁连五的数量更多来判定胜负。对于这样的想法,我认为大家应该以一种开放的心态去看待,即使是持反对态度,也要理解提出此类想法的人为了使五子棋更具活力,更加精彩而花费的心思,不要粗暴地给人家扣上一顶“荒诞不经”的帽子完事。目前五子棋在规则方面遇到的困境不是简单采用某种现行规则,甚至不是对现行

10、规则进行一些枝节上的修改能解决得了的。必须要有大胆的、飞跃性的变革才能使奄奄一息的五子棋有脱胎换骨的变化。至于具体的变革方式,我这个五子棋的门外汉怕是给不出什么像样的建议,还得靠你们这些内行来想办法。要说实现这一目标的具体方案,最好是能开一个全国乃至全世界范围内的规则统一大会,列举出几种切实可行的全新规则并经过充分讨论后,以投票方式选出最终的统一规则。也许有人觉得这个方案离现实太过遥远,不过我倒觉得此方案比统一于现有的有禁或无禁方案要现实可行的多,因为如果在目前某派所掌握的规则下实现统一,另一派会有严重的被欺压和被掠夺感,从而在心理上产生强烈的抗拒。第二章 需求分析2.1业务需求1. 使用范围

11、要求该系统适于游戏爱好者。2. 功能要求该系统主要有以下功能:(1)玩家能与电脑下子(2)适于新手来玩2.2 性能需求虽然系统不大,但要满足玩家的基本要求,电脑有一定的智能,能给于新手一定的帮助。2.3 系统平台需求1. 系统开发平台操作系统:Windows xp系列开发工具:Visual C+ 6.02. 开发环境介绍Visual C+是Microsoft C/C+ 7.0之后推出的新一代程序开发工具,它不仅继承C+的特性,同时具备可视化程序语言(Visual Programming Language)及程序产生器的概念。既然是面向对象语言,当然会提供系统基础类给程序员再使用(Reuse)。

12、在Visual C+ 中,延袭Microsoft C/C+7.0的作法,将原有的SDK函数重新封装在适当的类中,构造了“基础类函数库(Microsoft Foundation Class Library,简称MFC)”,它提供了许多现成的框架对象,可供在使用Visual C+设计应用程序是使用。此外,还提供“ClassWizard”与“AppWizard”可帮助构造基本的程序框架,从软件再使用的技术观点而言,已由SDK函数库方式经过面向对象程序设计方式进展到自动产生模板相关类程序代码方式(Framework)。面向对象的程序设计是一种新型的程序设计方法,计算机环境本身就是一个对象的集合体,对象

13、彼此之间通过消息相互作用,面向对象的程序设计提高了程序的模块化和可维护性。面向对象的程序设计有几个特点及优点。首先,由于对象包含属性和方法,因此支持模块化程序设计,而模块化程序设计支持开发的便利性及代码的可维护性。Visual C+ 6.0是Microsoft公司推出的功能最强大、最复杂的语言产品之一,它是目前为止在Windows环境下进行大型软件开发的首选。其具有如下特点:(1)Visual C+ + 的语法符合ANSL C+ + 标准,并在此基础上针对Windows操作系统增加了一些语句;(2)集成了MFC(Microsoft Foundation Class)类库,MFC封装了Windo

14、ws API函数和消息,使程序员可以使用MFC高效率地开发各种应用程序;(3)提供了MFC AppWizard,可方便地生成程序框架;(4)提供了基于MFC的ClassWizard,通过它可以轻松地完成对各种MFC类的使用与维护。Visual C+ 6.0作为Visual Studio家族中的一员,是Microsoft公司以C+语言为基础开发的可视化集成开发工具,与其他编程语言Visual Basic 6.0、Visual ForPro等一起,成为广大程序员喜爱的开发平台。2.4 数据流图及数据字典 由于此系统没有数据库,故没有数据流与数据字典。第三章 总体设计经过分析,对五子棋流程进行整理,

15、得出其使用过程如下:进入系统之后。玩家按F1开始游戏,首先是玩家下子,接着电脑下子。一直循环。在电脑或是玩家下了一个子后,电脑就计算一下,是否电脑获胜或玩家获胜或是和棋。若有一种情况出现,则暂停游戏显示出相应的结果。若玩家还想玩,继续按F1,若要退出则按F12。在游戏开始后,玩家可按F11进行智能提示。此按钮适于新手或是“作弊”的群体。3.1 系统流程图程序流程图如图3-1所示。首先看到的界面是我们熟悉的棋盘。可看到下面有一行文字。当用户按F1时,则游戏开始,这时用户先下子。电脑此时先根据算法计算下,是否和棋,是否电脑获胜,是否玩家获胜,若有一种情况发生,则进入暂停阶段,此时下子则无效,电脑显

16、示相应的结果,否则电脑就根据自己的得分算法,计算出最佳位置。把电脑的子下到最好位置上。电脑下子了后,则电脑继续判断是否和棋,是否电脑获胜,是否玩家获胜,若有一种情况发生,同样进入到暂停阶段,显示相应的结果。若用户按了F12,则整个系统退出结束。若在开始后,又按了F11,则显示提示功能。这对于新手来说是很好的功能。3.2系统分析在看别人下棋时,我们常说一句“当局者迷,旁观者清”,但这句话对于AI所控制的计算机来说是不正确的。相反,计算机必须知道每回合的情况,能够知道有哪些获胜的方式,并计算出下一步棋的位置,判断当前的情况。A:求得所有获胜的组合首先,在一场五子棋的游戏中,计算机必须要知道有哪些获

17、胜的组合,因此必须求得获胜的组合的总数,而求出总数后便可建立一个数组。可在游戏执行时判断胜负,这个概念比较复杂,我们可以在后面的代码中可看到。我要做的是19X19的棋盘,获胜总数有点多。下面一一来讨论。(以表格作为棋盘,1表示为某一方的子,其中以(i,j)表示第i行第j列的格子,)1. 计算水平方向的获胜组合数1 2 3 15 16 17 18 191 可以看到对于第一行中(1,1),(1,2),(1,3),(1,4),(1,5)这五个格可以是一个获胜组合,而(1,2),(1,3),(1,4),(1,5),(1,6)这五个格子也可以组成一个获胜组合。这样一直到最后一种为(1,15),(1,16

18、),(1,17),(1,18),(1,19)这五个格子组成一个获胜组合。即第一行有15种获胜的组合。总的有19行。可得,对于行中,我们有19X15=285种获胜组合。2. 计算垂直方向的获胜组合数同理对于垂直的获胜组合中第一种为第一列的1,2,3,4,5可组成一个获胜组合。总的获胜组合也是19X15=285种。3. 计算正斜方向的获胜组合数1 2 3 4 5 15 16 17 18 19 在第一行中,则可知(1,1),(2,2),(3,3),(4,4),(5,5)为一获胜组合,而(1,3),(2,4),(3,5),(4,6),(5,7)也是一种获胜组合。第一行中的最后一种为(1,15),(2,

19、16),(3,17),(4,18),(5,19)。总的获胜组合有15种,而最后一行i只能到15。这样我们可以计算得到正斜有15X15=225种。4. 计算反斜方向的获胜组合数依据上一种正斜,同理可推知反斜也有15X15=225种。由前面的讨论中,我们可计算出19X19表格中五子棋的获胜种数。一共有285+285+225+225=1020种获胜方式。B:建立一些相应的变量对此我建立了一个数组,如下:BOOL cmp19191020; /电脑的每一颗棋子是否在各个获胜组合中BOOL ply19191020;int wcount21020; /电脑与玩家在各个组合中的棋子个数(三个变量的简写来源cm

20、p:computer ply:player wcount:win count)如上述讨论可知,对于电脑,若为正斜中的第一种情况,并假定为1020种获胜组合中的第570种获胜组合。则其数组元素值设定如下:cmp00570=true;cmp01570=flase;cmp02570=false;cmp10570=false;cmp11570=true;cmp12570=false;cmp22570=true;cmp33570=true;cmp44570=true;ply数组元素的初始化与cmp是相同的,但若在程序执行时,若玩家的棋占了(0,0)的位置,那么电脑在cmp00570元素就会置为false

21、,因为计算机就不可能再下到(0,0)上,因此第570种方法中对电脑来说是不可能的情况了。同理,对于若是电脑占了(0,0)的位置,则玩家中此获胜组合中也置为不可能。wcount21020用来记录玩家或计算机在各自的获胜组合中棋子的个数。其中wcount0来计算电脑的个数,wcount1用来计算玩家的个数。假如在第570种获胜组合中填入了3个电脑的子,则此时则有wcount0570=3。若在某一时刻有wcount=5,则此时即可判定某一方获胜了。C:分数的设定组在游戏中,为了让电脑找到最佳的走法,必须计算出电脑下到棋盘中任一格的分数,其中最高分即是电脑下的位置。如下表所示,为了讨论方便,我只画了一个10X10的表格(其中C表示电脑的子,P表示玩家的子) 1 2 3 4 5 6 7 8 9 105101520CP如上表所示,为什么会出现在C左边为0而下面却为20分呢。我们看下上面的表格就可知,C的左边有三个格,要想获胜,则必须再加上左右边的一个格了,而右边的一个格子被电脑占了,因此,此获胜组合中置为不可能,得分为0。而对于C下面的格子有四个获胜的组合,且每一种组合都可能获胜,因此每种组合的分数累加,可以得出其分数为20。因此在此棋盘中,最佳位置有四个。以上是按每一种获胜组合为5分的

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2