《围棋游戏的设计与实现学士学位论文.docx》由会员分享,可在线阅读,更多相关《围棋游戏的设计与实现学士学位论文.docx(55页珍藏版)》请在第一文库网上搜索。
1、围棋游戏的设计与实现围棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用JaVa开发五子棋游戏。主要完成了人机对战和玩家之间联网对战2个功能。网络连接部分为SOCket编程应用,客户端和服务器端的交互用CIaSSMeSSage定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上
2、分析一些提高电脑A1方案,如递归算法、电脑学习等。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。关键词:围棋,信息自动化,游戏,javaDesignandImp1ementationofchessgameABSTRACTGoasachesstournamentsportisverypopu1arinthefo1k,inordertoknowtherenjuru1esandtechniques,andartificia1inte11igenceresearchsimp1e,decidedtouseJavagobanggamedeve1opment.Main
3、comp1etedtheman-machinebetweennetworkingandmu1tip1ayergamewithtwofunctions.NetworkconnectionpartsforSocketprogrammingapp1ications,c1ientandtheservertointeractwiththeC1assMessagedefinition,hasgoodsca1abi1ity,thec1ientisresponsib1eforthemaintenanceandco11ectinformationofuserinputinterface,anderrorhand
4、1ing.Thebasicinformationoftheservermaintenanceon1ineusersandanytwoagainsttheusersinformationboard,dynamicmaintenanceuser1ist.Throughdeepsearchandva1uationinman-machinegamemodu1e,toimprovecomputerchessp1ayersinte11igence.Ana1ysisofsevera1factorsthathaveeffectontheprecisionoftheva1uationmodu1e,andputs
5、forwardsomeimprovetheprecisionofthemethod,aswe11astothenumberofnodesinthesearchtocomparethem,onthebasisofthesea1gorithmsana1yzesomeimproveAIscheme,suchasrecursivea1gorithm,computer1earning,etc.A1gorithmresearchhe1pstounderstandtheprogramstructure,enhancethe1ogica1thinkingabi1ity,intheotherartificia1
6、inte11igencea1sohasagreatreferencefunction.Keywords:Go,InformationAutomation,Games,Java摘要IABSTRACTII第1章绪论111背景11.2设计内容2第2章围棋对弈系统42.1围棋概述42 .1.1围棋定义43 .1.2开发围棋的任务及目的52.2 主要系统介绍52.3 本章小结6第3章围棋对弈系统的设计73.1系统需求分析73.2系统开发及运行环境83.3系统主要功能要求83.4系统总体结构93.5本章小结10第4章围棋对弈系统的具体实现H1. 1界面设计114. 2输赢判断设计145. 3程序设计及调试
7、运行156. 4本章小结15第5章结束语16参考文献17致谢18附录19译文资料33中文译文47第1章绪论1.1背景围棋是一种智力游戏,起源于中国。中日韩是现今围棋的三大支柱,但近年来日本围棋逐步衰弱,形成了中韩争霸的局面。围棋是中华民族传统文化中的瑰宝,它体现了中华民族对智慧的追求,古人常以“琴棋书画”论及一个人的才华和修养,其中的“棋”指的就是围棋。被人们形象地比喻为黑白世界的围棋,是我国古人所喜爱的娱乐竞技活动,同时也是人类历史上最悠久的一种棋戏。由于它将科学、艺术和竞技三者融为一体,有着发展智力,培养意志品质和机动灵活的战略战术思想意识的特点,因而,几千年来长盛不衰,并逐渐地发展成了一
8、种国际性的文化竞技活动。围棋是一种策略性二人棋类游戏,使用格状棋盘及黑白二色棋子进行对弈。目前围棋流行于亚太,覆盖世界范围,是一种非常流行的棋类游戏。中国围棋规则是数子法,围棋的本质是:谁的占地面积大谁获胜。围棋的规则十分简单,却拥有十分广阔的落子空间,使得围棋变化多端,比其它棋类复杂深奥。这就是围棋的魅力所在。下围棋对人脑的智力开发很有帮助,可增强一个人的计算能力、创造能力、思维能力、判断能力,也能提高人的注意力和控制力。下围棋对儿童少年的智力发展起到积极作用,使他们能更好的分析事物。Java语言是当今最为流行的程序设计语言之一作为一门非常优秀和极为健壮的编程语言,它同时具有的面向对象,与平
9、台无关,分布式应用,安全,稳定和多线程等优良的特征,使用JaVa语言,不仅可以开发出功能强大的大型应用程序,而且JaVa语言本身突出的跨平台的特性也使得它特别适合于Internet上的应用开发,可以这样说,Java的出现使得所开发的应用程序”一次编写,处处可用”的实现成为了可能。近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有更多的娱乐项目,而棋类游戏能起到锻炼人的思维和修身养性的作用,而且棋类游戏水平颇高,大有与人脑分庭抗礼之势。其中战胜过国际象棋世界冠军-卡斯帕罗夫的“深蓝”便是最具说服力的代表。越来越多的具有智能的机器进入了人类的生活,人工智能的重要性如今显而易见。自己
10、对人工智能比较感兴趣,而围棋游戏程序的开发实现这个课题,正好提供给我这样一个研究的机会,通过对人工智能中博弈方面的研究(人机对弈),让我在简单的人机对弈全局设计,以及具体到相关算法上有了深入的了解。人工智能属于计算机科学的领域,它以计算机技术为基础,近几十年来,它的理论和技术已经日益成熟,应用领域也正在不断扩大,显示出强大的生命力。人工智能大致可以分成几个学科,它们每一个都是独特的,但是它们常常又互相结合起来完成设计任务,这时,这些学科之间的差别就变的很模糊。人工智能在专家系统,自然语言理解,自动定理证明,自动程序设计,人工智能在机器人学、模式识别、物景分析、数据库的智能检索、机器下棋(实质上
11、是博弈论问题)和家用电器智能化等领域都有广泛的应用。而这个课题就是和人工智能中的博弈论领域紧密相关的。这个题目核心是人工智能和SOCekt编程,。并且人工智能中的博弈部分,由于采用了大量的搜索算法,其中很多被利用到各方面。它的概念、方法和技术,正在各行各业广泛渗透。智能已经成为当今各种新产品、新装备的发展方向。所以,趁着这个机会,对人工智能中比较容易实现的人机博弈进行了解研究学习,也是很实用且很有必要的。12设计内容此设计是一个小游戏(围棋)的实现,主要运用了GUI(用户图形界面)API(应用程序借口)来实现。此程序没有用到图片的引用,棋盘和棋子的设计完全是应用函数绘制,再加入复选框,按钮,标
12、签及实现本游戏的用户界面布局。在页面上通过单纯的JCreatOr实现的下棋程序,能够实现提子,打劫等简单的下棋功能。更好的掌握java编程以及布局和设计。通过课程设计把课堂上讲的内容融会贯通,学会设计程序、开发应用软件、开发系统软件等各项工作。通过实习掌握语言的语法结构,理解类和对象的概念,准确的使用各种数据类型,对面向对象中的继承和多态的概念要理解、会使用,在程序中提高代码的重用性,使设计的程序结构清晰、易于维护。一、棋盘盘面有纵横各十九条等距离、垂直交叉的平行线,共构成19X19=361个交叉点(以下简称为“点”)。在盘面上标有几个小圆点。称为星位,中央的星位又称“天元”。二、棋子棋子分黑
13、白两色。均为扁圆形。棋子的数量以黑子181、白子180个为宜。三、围棋的下法1、对局双方各执一色棋子,黑先白后,交替下子,每次只能下一子。2、棋子下在棋盘的点上。3、棋子下定后,不得向其他点移动。4、轮流下子是双方的权利,但允许任何一方放弃下子权。四、棋子的气一个棋子在棋盘上,与它直线紧邻的空点是这个棋子的“气”。棋子直线紧邻的点上,如果有同色棋子存在,则它们便相互连接成一个不可分割的整体。它们的气也应一并计算。棋子直线紧邻的点上,如果有异色棋子存在,这口气就不复存在。如所有的气均为对方所占据,便呈无气状态。无气状态的棋子不能在棋盘上存在,也就是第四条提子。五、提子把无气之子提出盘外的手段叫“
14、提子提子有二种:1、下子后,对方棋子无气,应立即提取。2、下子后,双方棋子都呈无气状态,应立即提取对方无气之子。六、计算胜负1、贴3又3/4子的规则第一步,把死子捡掉。第二步,只数一方围得点(叫做目)并记录下来(一般围得点以整十目为单位),再数刚才那一方的子数并记录下来,再把目数和子数加起来。第三步,如果数的是黑棋,再减去3又3/4子,如果数的是白棋,再加上3又3/4子。第四步,结果和180又1/2(棋盘361个点的一半)比较,超过就算胜,否则判负。2、让先与让子让先不贴目,让子要贴还让子数的一半(就当被让方是预先收了单官)。第2章围棋对弈系统1.1 围棋概述网络围棋在中国的出现几乎跟随着互联
15、网同步成长,1998年,联众率先推出了网络围棋对弈。几年来各大网络围棋平台先后上线,出身各异,水平也参差不齐。根据网络资料显示,截止2007年底,中国网络围棋平台平均在线人数达6万人。大型的游戏平台如QQ游戏、联众游戏中都有围棋游戏。也就是说QQ围棋、联众围棋都是镶嵌在其游戏平台之上。依靠游戏平台用户人数的优势,这两个平台围棋用户人数占据了网络围棋用户的半数之多。但根据专业人士分析:这部分用户无论在产品使用深度和对围棋的认知上是绝对的新手,浅尝辄止,他们大多是过客。同时他们的围棋软件本身也不够专业。专业的网络围棋平台才是中国网络围棋普及和发展的出路。目前国内的专业网络围棋平台,大致可分使用韩产
16、软件和国产软件两大类。国内专业围棋平台的领军人物弈城、TOM,便是使用韩产软件的代表。两平台能够实现中韩对垒的特性,为他们吸引了不少高水平的棋手,并受到棋友的广泛认可。但他们同样有一个死穴,就是两家皆为购买韩国软件,不掌握主动权,因此根本无法保证软件的及时更新,容易受制于韩方。“弈城事件”便将这个致命缺点暴露无疑。经典的围棋系统有:Handta1k,Goemate,Wu1u,他是陈志行的作品,曾多次获得过冠军。在他的指导下一个研究小组编写了乌鹭(WU1U),也在比赛中取得过亚军。Handta1k是用汇编语言编写的,执行速度快,程序本身也不大。由于程序并不大,可以推侧出其所用到的模式资料也不多。Handta1k在大多数