五子棋人机对弈系统.docx
- 文档编号:3792051
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:39
- 大小:943.99KB
五子棋人机对弈系统.docx
《五子棋人机对弈系统.docx》由会员分享,可在线阅读,更多相关《五子棋人机对弈系统.docx(39页珍藏版)》请在冰点文库上搜索。
五子棋人机对弈系统
********本科毕业论文(设计)任务书
论文(设计)题目:
五子棋人机对弈系统
学院:
专业:
班级:
学生姓名:
学号:
指导教师:
职称:
1、论文(设计)研究目标及主要任务
研究目标:
采用具有一定智能的算法,实现具有上述四个功能的单机版人机对弈游戏。
这个目的的实现首先要设计出智能的算法,关于智能算法的智能程度是评判本项目的一个重要依据。
其次、选择一个合适的工具实现美观的界面,也是一个重要内容。
主要任务:
1、计算机能对棋局进行分析、判断。
根据棋局状态来确定机器方的下棋行为。
2、计算机能根据棋局状态实时的判断对弈双方的胜负。
3、控制双方交替下棋。
4、友好的界面呈现。
2、论文(设计)的主要内容
计算机能对棋局进行分析、判断。
根据棋局状态来确定机器方的下棋行为。
并且计算机能根据棋局状态实时的判断对弈双方的胜负,自动控制双方交替下棋,程序有一个友好的界面呈现给玩家。
3、论文(设计)的基础条件及研究路线
基础条件:
1、本项目需要学生具有扎实的C++或者C语言的知识;
2、一定的数据结构知识;
3、对人工智能有兴趣;
4、对第三方库有一定的使用经验。
研究路线:
1、能够产生可运行游戏;
2、完整的程序代码;
3、较详细的软件过程成果。
4、主要参考文献
[1]StanleyB.LippmanBarbaraE.C++Primer.人民邮电出版社,2006.
[2]谭浩强.C++程序设计.清华大学出版社,2004.
[3]刘宗田,邢大红,孙慧杰.C++编程思想.机械工业出版社,2002.
5、计划进度
阶段
起止日期
1
熟悉相关资料
12-12-01至13-01-01
2
需求分析,撰写需求分析说明书
13-01-01至13-01-20
3
系统设计,撰写详细设计文档
13-01-21至13-02-15
4
系统实现
13-02-16至13-04-01
5
系统测试
13-04-02至13-04-10
6
论文撰写与修改
13-04-11至13-04-30
7
提交毕业论文、成果,毕业答辩
13-04月底
********本科生毕业论文(设计)开题报告书
学院专业届
学生
姓名
论文(设计)题目
五子棋人机对弈系统
指导
教师
专业
职称
所属教研室
研究方向
课题论证:
目前有很多人都在研究五子棋的算法,都希望能够设计出好的程序,使玩游戏的过程能够更加顺畅一些,不要频繁出现系统死机,当然,程序的实现方法有很多种算法,比如:
递归算法,二叉树等,现在我所讨论的算法是最基本的算法,但是无论我们用什么样的算法来实现都要保证使我们的游戏更加顺畅,被大多数人群所接受,并且游戏的内容很丰富。
(下见附页一)
方案设计:
1、计算机能对棋局进行分析、判断。
根据棋局状态来确定机器方的下棋行为。
2、计算机能根据棋局状态实时的判断对弈双方的胜负。
3、控制双方交替下棋。
4、友好的界面呈现。
进度计划:
12-12-01至13-01-01熟悉相关资料
13-01-01至13-01-20需求分析,撰写需求分析说明书
13-01-21至13-02-15系统设计,撰写详细设计文档
13-02-16至13-04-01系统实现
13-04-02至13-04-10系统测试
13-04-11至13-04-30论文撰写与修改
13-05-10提交毕业论文、成果,毕业答辩
指导教师意见:
指导教师签名:
年月日
教研室意见:
教研室主任签名:
年月日
附页一
我们现在五子棋程序实现过程中面临的最大问题就是连五终局,连五终局与五局连胜不一样,连五的一方有可能因为违反长连原则而被判为负方。
正是五子棋的这个特点使得五子棋的算法变的很难,在其他棋类游戏的设计过程中,很多棋子不用设计算法来限制他的权限和规则,而五子棋确要考虑到对方的活三和冲四而不得不思考自己下一步棋子到底应该放在哪。
在下棋规则方面五子棋也存在很大的困难,而现存的困难需要我们从头到尾的变革才能实现,仅仅从现有的规则上改进或者直接照抄现在的规则远远不能实现,这就需要我们的创新精神来帮助我们完成这个任务。
说到如何变革这个问题我想这就需要我们培养更多的IT精英来加入到我们这个队伍中来,我们需要更多的专业人才来帮助我们完成这个任务,更早更快的实现我们的超级五子棋程序。
如果非要提出一个具体的解决方案那我有一个大胆的设想,我们可以开放一个平台,让全国甚至是全世界的人都加入到这个平台中提出他们的规则或者他们想要的规则,然后我们可以网上投票选出被大多数人所拥护的五子棋规则就是我们最终统一的规则。
这个方案尽管有一些大胆,但我认为我们可以尝试一下,另外我们可以成立专门的五子棋协会来监督和管理我们五子棋的规则,以及日常中有关五子棋的一些改善和提升。
近些年来五子棋游戏成为了人们的最爱,游戏的下载量很高可以说一直排在前几位,也是人们日常生活中放松娱乐的最爱,特别是最近IT行业的发展,人工智能的实现,移动客户端的发展和普及为我们五子棋游戏的发展带来了新的生机,新的高潮,人工智能与五子棋的完美结合是五子棋的又一项重要发展,而我们现在开发的人机对弈更是掀起了五子棋发展的新篇章,为五子棋的发展与传播提供了新的机会,但是机会与挑战并存,我们相信通过我们对五子棋程序的不断优化和完善,五子棋一定会越来越受到大家的欢迎。
********本科生毕业论文(设计)文献综述
1概述:
早在四千年前五子棋就变得非常流行了,所以五子棋是我们中华民族的传统,它有着悠久的历史,经过几千年的发展,如今的五子棋已经变得非常正规,也是我们中华民族文化的一种象征,有一定的民族性
五子棋的源头是中国古代的黑白棋,现代五子棋日文称之为“连珠”,它如今有很多的别称,比如:
“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种名称,不同的国家有不同的称呼,韩国人甚至会把它成为“情侣棋”,因为他们认为下棋是一种交流感情的好办法,夫妻之间可以借此机会表达对对方的爱意。
所以,五子棋现在已经跨越了国界,不仅仅中国人喜爱它,很多外国朋友也经常下五子棋,所以五子棋不但有东方文化的神秘感,也有西方文化的直观,所以是中西方文化的交汇点,是我们多年来智慧的结晶。
人们的压力现在逐渐增大,如果没有劳逸结合,很难有更加高效的工作效率,对于每一个人来说,工作之余的娱乐都是必须的。
五子棋这种娱乐游戏不但简单易学而且还具有深奥的技巧,真的是既富有趣味性又富有消遣性。
在经过不断的发展后,它已经成为棋盘类娱乐中的一个非常重要的部分,它可以增强发散思维、开发智力,是我们在休闲娱乐时的不错选择。
我们现在要做的是在计算机上下棋,这是从我们现实生活中发展过来的,所以我们应该尽可能的模拟现实生活,根据生活中的五子棋来设计我们计算机应该实现的五子棋,应该包含棋盘和棋子,五子棋已经越来越成为我们中华民族的一种代表,在人们下棋过程中的趣味是我们他人所无法想象的,甚至有的旁观者都感觉非常有趣,投入其中,在我们快乐的同时还能增强思维能力,提高智力,且富含着丰富的哲理,有助于我们平时修身养性。
随着科技进步和社会的发展,人类发明了计算机,它的出现和普及,使得五子棋游戏在计算机上也流行起来了,近几年软件的发展,很多优秀软件工程师的出现更使得在电脑或手机上下五子棋成为一种时尚,这为我们国家五子棋队的发展提供了方便,使得很多五子棋能手涌现出来,促进我们中华民族越来越强大,使得我国在五子棋领域成为强国,使得五子棋成为我们中国的代表。
目前存在着许多人机对弈五子棋游戏,并且在很多平台上都已经实现,但是很多游戏只有美观的界面而计算机的智能较低,在人机对弈过程中,计算机无法充分发挥它的准确、快速的计算特性。
所以我决定充分挖掘计算机的优势,使得计算机在人机对弈过程中充分的体现出计算机的优越性。
人机对弈五子棋只需要一个真实玩家,更加灵活方便,使我们随时随地的与计算机相比高低,锻炼自己的逻辑思维,不仅有益于我们的协调和思维能力,促进注意力集中,增强我们的耐心,还能培养并提升我们的逻辑能力,对我们的记忆力以及智力都会有很大的帮助。
2国内外现状:
目前有很多人都在研究五子棋的算法,都希望能够设计出好的程序,使玩游戏的过程能够更加顺畅一些,不要频繁出现系统死机,当然,程序的实现方法有很多种算法,比如:
递归算法,二叉树等,现在我所讨论的算法是最基本的算法,但是无论我们用什么样的算法来实现都要保证使我们的游戏更加顺畅,被大多数人群所接受,并且游戏的内容很丰富。
我们现在五子棋程序实现过程中面临的最大问题就是连五终局,连五终局与五局连胜不一样,连五的一方有可能因为违反长连原则而被判为负方。
正是五子棋的这个特点使得五子棋的算法变的很难,在其他棋类游戏的设计过程中,很多棋子不用设计算法来限制他的权限和规则,而五子棋确要考虑到对方的活三和冲四而不得不思考自己下一步棋子到底应该放在哪。
在下棋规则方面五子棋也存在很大的困难,而现存的困难需要我们从头到尾的变革才能实现,仅仅从现有的规则上改进或者直接照抄现在的规则远远不能实现,这就需要我们的创新精神来帮助我们完成这个任务。
说到如何变革这个问题我想这就需要我们培养更多的IT精英来加入到我们这个队伍中来,我们需要更多的专业人才来帮助我们完成这个任务,更早更快的实现我们的超级五子棋程序。
如果非要提出一个具体的解决方案那我有一个大胆的设想,我们可以开放一个平台,让全国甚至是全世界的人都加入到这个平台中提出他们的规则或者他们想要的规则,然后我们可以网上投票选出被大多数人所拥护的五子棋规则就是我们最终统一的规则。
这个方案尽管有一些大胆,但我认为我们可以尝试一下,另外我们可以成立专门的五子棋协会来监督和管理我们五子棋的规则,以及日常中有关五子棋的一些改善和提升。
近些年来五子棋游戏成为了人们的最爱,游戏的下载量很高可以说一直排在前几位,也是人们日常生活中放松娱乐的最爱,特别是最近IT行业的发展,人工智能的实现,移动客户端的发展和普及为我们五子棋游戏的发展带来了新的生机,新的高潮,人工智能与五子棋的完美结合是五子棋的又一项重要发展,而我们现在开发的人机对弈更是掀起了五子棋发展的新篇章,为五子棋的发展与传播提供了新的机会,但是机会与挑战并存,我们相信通过我们对五子棋程序的不断优化和完善,五子棋一定会越来越受到大家的欢迎。
3发展趋势:
我国是从20世纪90年代引进五子棋世界流行规则的,此后的十多年的时间里,五子棋在民间迅速普及。
北京是五子棋发展最早也最普及的地区,1992年就成立了我国第一个五子棋民间组织——京都五子棋社。
在北京的带动下,其他地区也先后成立了五子棋组织,如天津成立了由天津市体育局群体处领导的天津市五子棋工作委员会,河北廊坊市、文安县和黑龙江省大庆市都成立了五子棋协会,河北秦皇岛市、上海市、江苏镇江等地正在成立五子棋协会,河北的石家庄、沧州等地和云南、浙江、辽宁、吉林、安徽等地也成立了五子棋组织等。
这些五子棋组织成立后,在当地开展了形式多样的五子棋活动。
经过十多年的发展,我国几乎所有的省、自治区和直辖市都有五子棋爱好者。
目前,高水平的五子棋爱好者集中在北京、天津、上海、河北、浙江、江苏、辽宁等地,重庆、四川、云南、吉林、黑龙江等地的五子棋爱好者也有较高的水平。
随着五子棋在世界范围内的普及,1988年8月8日,五子棋的国际民间组织——国际连珠联盟(RenjuInternationalFederation,简称为RIF)在瑞典成立,现在已经有日本、俄罗斯、爱沙尼亚等四十多个成员国加入。
国际连珠联盟下设若干机构,负责网络、竞赛、技术、出版、青少年等工作。
国际连珠联盟成立后,致力于五子棋在世界范围内的普及和发展,设立了一系列正式的国际比赛,如世界锦标赛、世界青少年锦标赛等,其中影响最大、水平最高的是世界锦标赛。
世界锦标赛两年举办一届,有近20个国家的选手参加,每届参赛选手80人左右,这些选手大多是通过本国预选赛才获得参赛资格的。
比赛分A组、B组和女子组,其中水平最高的A组只有12个名额,通过资格赛的才能参加A组比赛。
世界锦标赛至今已经举办了7届,冠军多由日本和爱沙尼亚棋手获得。
由于中国棋院与国际连珠联盟没有建立正式联系,在2003年之前,我国的五子棋爱好者主要是通过民间组织——北京千禧连珠体育文化交流有限公司与国际连珠联盟进行联系的。
该公司在我国五子棋的普及和发展过程中起过积极的推动作用。
2003年10月在中国棋院主办的第二届全国五子棋邀请赛期间,中国棋院院长王汝南与国际连珠联盟主席彼得-约翰逊和副主席韩宁森等进行了会谈,双方就五子棋在中国和世界的发展等问题交流了各自的看法。
五子棋运动起源于我国古代,20世纪初,经日本传到世界各地后,五子棋逐渐发展成为一项国际性的智力运动项目。
2002年,总局棋牌中心开始对其进行规范管理。
2004年中国围棋协会五子棋分会成立;2006年五子棋被列入国家正式开展的体育项目;2009年第一届全国智力运动会上,五子棋是正式比赛项目之一。
如今,五子棋因其“易学、快捷”等特点越来越受到青少年朋友们的欢迎,涌现出了一批五子棋的小爱好者,其中一些水平相对较高的少年选手还在全国比赛中脱颖而出。
上海是国内较早开展五子棋运动的地区之一。
长期以来,这项广受群众喜爱的智力体育项目在徐汇区拥有良好的发展氛围。
近年来,在市体育局、市棋牌运动管理中心的关心与支持下,五子棋项目的发展整合区域内外有利资源,加强市区联动、体教融合,取得了明显的进步。
一方面,加强入校布点,开展项目普及培训,目前已在全市10所中小学开课;另一方面,组织苗子集中训练,培养业余训练专业选手,组织参加全市、全国的重大赛事,提升五子棋专业水平。
“国家体育总局把全国智运会列入常规性赛事后,对上海的棋牌运动起到了很大的保障作用。
在五子棋的推广上,徐汇区起到了引领作用。
”张国强告诉记者,五子棋青少年队和培训基地的成立,使该项目后备人才的培养迈上了整合发展的新道路,“这支队伍肩负征战全国五子棋青少年锦标赛、2015年全国智运会的任务,但上海被定位成亚洲一流的棋牌大都市,境界和起点自然要高点,上海的五子棋不仅要走向全国,还要走向世界。
”
人工智能(ArtificialIntelligence,简称AI)是计算机学科的一个分支,二十世纪七十年代以来被称为世界三大尖端技术之一(空间技术、能源技术、人工智能)。
也被认为是二十一世纪(基因工程、纳米科学、人工智能)三大尖端技术之一。
这是因为近三十年来它获得了迅速的发展,在很多学科领域都获得了广泛应用,并取得了丰硕的成果,人工智能已逐步成为一个独立的分支,无论在理论和实践上都已自成一个系统。
五子棋游戏发展迅速,并且各种游戏都已经和人工智能有所相关,随着人工智能的发展,五子棋与其结合的更加紧密。
4存在问题
五子棋人机对弈游戏的设计主要围绕了计算机是如何进行下棋,以及如何计算下一步棋落子之后胜负的概率,进而判断出应该在什么地方下棋,以及落子后的胜负概率。
在开始落子时我们应该尽量保证每次开始时落子的位置不同,因为计算机每次下棋的位置都是我们人工设定的,所以如果我们每次都按照上次那样开始落子,就可能会是这次的棋盘与上次的一模一样,就失去了我们下五子棋的意义,没有了趣味性。
考虑到程序的响应速度,人机对弈算法只对玩家的棋子进行了一步的推测。
对于人机对弈的悔棋处理,由于这个算法的开销相当大,每一步落子都会存在不同的棋盘布局,所以实现从头到尾的悔棋不是很现实(将会存在过多的空间保存棋盘布局),因而在人机对弈模式下,只允许玩家悔最近的两步落子。
考虑到下棋同时还要聊天,所以并未对落子时间加入任何限制,同样如果玩家离开游戏也不会判负。
5参考文献
[1]StanleyB.LippmanBarbaraE.C++Primer.人民邮电出版社,2006.
[2]谭浩强.C++程序设计.清华大学出版社,2004.
[3]刘宗田,邢大红,孙慧杰.C++编程思想.机械工业出版社,2002.
[4]JesseLiberty.21天学通C++.人民邮电出版社,2003.
[5]易君.VisualC++.NET网络编程.中国铁道出版社,2003.
[6]CharlesPetzold.Windows程序设计.北京大学出版社,2002.
[7]侯捷,孟岩.C++标准程序库.华中科技大学出版社,2006.
********本科生毕业论文(设计)翻译文章
中文翻译:
五子棋的介绍和程序设计
五子棋是一种两人对弈的纯策略型棋类游戏,棋具与围棋通用,是起源于中国古代的传统黑白棋种之一。
发展于日本,流行于欧美。
容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。
已在各个游戏平台有应用。
一、介绍
传统五子棋的棋具与围棋大致相同,棋子分为黑白两色,棋盘为15×15,棋子放置于棋盘线交叉点上。
两人对局,各执一色,轮流下一子,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。
因为传统五子棋在落子后不能移动或拿掉,所以也可以用纸和笔来进行游戏。
五子棋棋子亦称“棋石”分黑、白两色,形状为扁圆形,有一面凸起或两面凸起等形状,厚度不超过0.8厘米,直径为2.0~2.3厘米;一副棋子总数为225枚,其中黑子113枚,白子112枚。
按质地的不同,可分为玻璃、陶瓷、塑料、智石、磁铁、蛤贝、烧料、水晶、玛瑙、玉石等棋子。
国内质量比较好的是云子,而日本常用的棋子是贝壳制作的。
五子棋正规的记谱方法为用“五子棋稿纸”,即专供五子棋爱好者记录对局或着法的稿纸。
其上印有正规专用棋盘图形,记录时只要按相应位置在纸上标明行棋的先后,即可反映对局的进行过程。
非正规的记谱方法为用格子纸记录,即用单数1、3、5等记录黑方的走法,用双数2、4、6记录白方的走法,同样可反映对局的进行过程。
另外还有北京京都五子棋协会为了推广盲人下五子棋,以及正常人下盲棋并背诵五子棋棋谱,专门设计的盲棋记谱法等。
二、五子棋规则
无禁手规则:
(本游戏中心的就是这种规则,适用于初学者)
黑白双方依次落子,由黑先下,当棋盘上有三个子时(两黑一白),如果此时白方觉得开的局不利于自已可以提出交换,黑方无条件接受!
也可以不交换,主动权在白方!
然后继续下棋,任一方先在棋盘上形成横向、竖向、斜向的连续的相同颜色的五个(含五个以上)棋子的一方为胜。
禁手是针对黑棋而言的,禁手是指一手黑棋棋形成:
双活三,双四,长连(五子以上)为输!
这种方法限制了黑棋先行的优势!
禁手对白棋无效!
三、C++primer的类和数据抽象
C++primer第四版提供了一个全面的介绍了C++语言。
它提供了一个清晰的教程方法语言,增强了无数的例子和其他学习方法。
与大多数教程,它还提供了一个详细描述的语言,特别强调当前的和有效的编程技术。
无数的程序员已经使用以前版本的C++primer学习C++。
在那个时间C++已经成熟很多。
与广泛的可用性的标准库,可以使用和学习C++比过去更有效。
类对大多数C++程序来说是关键:
类让我们定义我们自己的类型和定制我们需要解决的问题,导致应用程序更容易编写和理解。
优秀的程序员已经精心设计了很多类类型,这使的我们可以容易使用的内置类型。
类在C++控制时所发生的对象初始化,复制、分配和销毁。
在这方面,C++不同于许多其他语言,其中很多不给类设计师能够控制这些操作。
第十三章涵盖了这些话题。
第十四章看着操作符重载,它允许操作数类型的类可以使用内置的运营商。
操作员过载的方法之一是,C++允许我们创建新类型作为直观的使用以及内置的类型。
这一章还提出了另一个特殊的类成员函数转换定义隐式转换从对象的类类型。
在C++中我们使用类来定义我们自己的抽象数据类型。
通过定义类型,镜子的概念问题我们正在努力解决,我们可以使我们的计划更容易编写、调试和修改。
我们也会解释更多关于类范围、构造函数,这个指针。
我们还将介绍与课堂有关的三个新特点:
朋友,和可变的和静态成员。
类是最重要的功能在C++。
早期版本的语言被命名为“C类”,强调中央的角色类设施。
随着语言的发展,支持建筑类增加。
语言的主要目的是提供设计特性,允许程序员定义自己的类型一样简单而直观的使用作为内置的类型。
本章提供的许多基本功能的类。
背后的基本想法类是数据抽象和封装。
数据抽象是一种编程(和设计)技术,依赖于接口和实现的分离。
类的设计者必须担心如何实现一个类,但程序员使用的类不需要了解这些细节。
相反,程序员使用类型需要知道只有类型的接口;他们可以进行抽象思维的类型并不是具体如何工作的类型。
封装是一个术语,它描述了技术相结合的较低级别的元素,形成一个新的、更高层次的实体。
一个函数是一个形式的封装:
详细的动作执行的功能被封装在更大的实体,是函数本身。
英文原文:
IntroductionandProgramDesignofGobang
Gobangisaveryoldtwo-playerboardgamewithsubtletacticsandstrategies.ItcomesfromJapanandisaprofessionalvariantofGo-Moku.Inmanycountries,suchasChina,Estonia,Japan,Latvia,Russia,andSweden,Gobangisplayedonahighlevelofperformance.
ComparedtoGobang,thegameofGo-Moku,mainlyplayedinChinaandJapan,hasrathersimplerules.Go-MokuwassolvedbyAllisin1992.Heprovedthatitisawongamefortheplayertomovefirst.InthisnoteweclaimthatGobangisafirst-playerwintoo.Wedescribeourresearchapproachandhowwearrivedatthisgame-theoreticalvalue.
1.INTRODUCTION
In1992AllissolvedthegameofGo-MokubymeansofthecomputerprogramVICTORIA(Allis,VandenHerik,andHuntjes,1993;Allis,1994).Themaintechniquesappliedwereproof-numbersearch(Allis,VanderMeulen,andVandenHerik,1994)andthreat-spacesearch(Allis,VandenHerik,andHuntjes,1995).Sincetheadvantageforthefirstplayerwaswell-known(SakataandIkawa,1981),manyvariantsofGo-Mokuweredevelopedsoastoreducetheadvantageofthefirstp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 五子棋 人机 对弈 系统