基于JAVA的围棋游戏的设计与实现论文_第1页
基于JAVA的围棋游戏的设计与实现论文_第2页
基于JAVA的围棋游戏的设计与实现论文_第3页
基于JAVA的围棋游戏的设计与实现论文_第4页
基于JAVA的围棋游戏的设计与实现论文_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、职场大变样社区():下载毕业设计成品职场大变样社区():下载毕业设计成品全套资料,全部50元以下毕业设计(论文)任务书 第1页毕业设计(论文)题目:基于java的围棋游戏的设计与实现毕业设计(论文)要求及原始数据(资料):1创建一个围棋对弈平台;2实现单机鼠标布子,单机一个重新开局等操作;3实现棋子吃子、判定下子合法等操作;4设计并实现捕获用户输入事件的插件;5深入分析围棋游戏的关键技术与编写语言;6训练检索文献资料和利用文献资料的能力;7训练撰写技术文档与学位论文的能力。 第2页毕业设计(论文)主要内容:1综述围棋游戏的应用与编程完善;2了

2、解编写围棋游戏的相关技术;3熟悉java中swing的组件运用; 4熟练使用jcreator等开发工具;5. 编程实现围棋游戏系统的功能要求;6围棋游戏系统的测试与修改。学生应交出的设计文件(论文):1内容完整、层次清晰、叙述流畅、排版规范的毕业设计论文;2包括毕业设计论文、源程序等内容在内的毕业设计电子文档及其它相关材料。 第3页主要参考文献(资料):1 陈轶、姚晓昆编著.java程序设计实验指导m.清华大学出版社,20062 赵文婧编著.java程序设计基础与上机指导m.清华大学出版社,20063 吴其庆编著.java程序设计实例教程m.冶金工业出版社,20064 陈国君等编著.java2

3、程序设计基础m.清华大学出版社,20065 冯博等编著.java网络编程实例教程m.清华大学出版社,2005.016 bruce tate编著.bitter javam. manning publications,2002.047 bruce eckel编著.thinking in javam. prentice hall ptr ,2002.128 joshua bloch编著. effective java: second editionm. addison-wesley,2008.059 张洪斌编著.java2高级程序设计m.中科多媒体出版社,2001,1110 卫建文、蒋咏梅编著.计算

4、机网络编程语言javam.计算机系统应用,2006专业班级学生要求设计(论文)工作起止日期指导教师签字日期教研室主任审查签字日期系主任批准签字日期基于java的围棋游戏的设计与实现摘 要目前,以计算机技术和网络技术为核心的现代网络技术已在现实生活和生产中得以广泛的使用,休闲类网络游戏集趣味性,娱乐性,互动性和益智性于一体,已经成为多数人群的休闲方式。电脑游戏经过短短30年的发展,已经成为影响公众生活,改变公众娱乐方式的重要产业。过去,人们主要是借助电影、电视、音乐等方式来娱乐。而今天,以游戏为代表的电子娱乐正在成为主流娱乐方式。游戏也正在迅速成长为一个庞大的产业。本课题的研究是基于java语言

5、来实现的围棋游戏,在eclipse平台上,使用软件开发实践和方法,详细介绍了游戏设计技术java的概念和游戏的实现过程,并在eclipse环境下使用java开发游戏软件作为本论文的实例。关键词:电脑游戏设计;围棋游戏;java语言 design and implementation of java-based chess gameabstract modern network technology, computer technology and network technology as the core can be widely used in real life and product

6、ion, casual game set interesting, entertaining, interactive and educational in one, has become the majority of the population casual way. computer game after just 30 years of development, has become an important industry to influence public life, changing public entertainment. the past, it was mainl

7、y by means of film, television, music and other entertainment. today, as the representative of the electronic entertainment game is becoming a mainstream form of entertainment. the game is also rapidly grown into a huge industry. the study of the subject is based on the java to achieve the chess gam

8、e, eclipse platform, software development practices and methods, detailed introduction game design technology c of the concept and the games implementation process and the use of java in eclipse environment development of game software as an instance of this thesis.keywords: computer game design che

9、ss game java目 录绪 论11 引言21.1 围棋简介21.2 开发背景31.3 国内外研究现状42 开发技术和环境52.1开发技术及工具简介52.1.1 java技术简介52.1.2 b/s结构62.2 游戏的设计72.2.1 游戏的组成与结构72.2.2 游戏的元素92.2.3 游戏系统的层次103 系统分析113.1可行性分析113.2 围棋需求分析124 软件总体设计144.1 总体设计144.2 游戏的实现目标及框架流程144.3 分析模型155 系统的详细设计195.1具体模块功能介绍195.1.1 游戏主界面总体设计195.1.2 判断下棋位置235.1.3 联机实现2

10、66 系统的实现与测试286.1 系统的功能模块实现286.1.1 棋盘的基础设置286.1.2 吃子功能296.1.3 联机功能296.1.4 判定下子合法功能316.2 测试的任务及目标316.2.1 测试的任务316.2.2 测试的目标316.3 软件测试的方法326.4 软件测试环节336.5 小结35总 结37参考文献39外文文献42中文翻译51绪 论随着时代的不断发展,围棋已经变成一项非常常见的娱乐项目,不仅有益身心健康,同时能够陶冶情操,特别是在前不久alphago围棋人工智能大战韩国李世石之后,不知不觉之间身边刮起了一股围棋热。围棋作为中国传统棋类游戏,最早可追溯到尧舜禹时代,

11、经历了绵延五千年的发展,在古代被认定为文人士大夫的必备要求,在中国历史上都有着举足轻重的地位。而随着时代不断的发展,人工智能的一步步发展,现如今人工智能已经成为了围棋领域内的热门话题。在人工智能的领域中,围棋向来被誉为最难攻克的项目,因为其设计到了图像学、计算机学、生物学等多种学科,同时其本身有着近乎无穷的下发和可能性,通过黑白棋子之间的互相对弈,可以实现非常多的不同走法,而随着科技的不断发展,特别是人工智能的不断发展,慢慢的计算机已经可以实现自主学习的能力,已经能够演算人类无法掌握的很多棋局,而基于这种的情况,开发一项利于人民大众休闲娱乐的软件显得十分有必要。本系统定为于“人-人”对弈,即取

12、消了院线必须需要实体才能进行对弈的情况,只要人人拥有一台pc终端,即可以实现对弈,同时,还能够实现系统自动吃子,判定胜负,计时等多功能,极大降低了使用实物对弈的成本和开销,同时增强了游戏的趣味性,本文便是基于这样的原则,简单的讨论了基于计算机的“人-人”对弈的一些模式和方法。具体实现“人-人”对弈。论文研究的主要内容:(1) 设计并实现了围棋棋局中胜负的评判标准。(2) 探讨了非大陆围棋规则中,棋局判定胜负的途径和方法。(3)设计与实现局面分析功能子系统。(4)探讨“人人”围棋对弈系统实现的途径和方法。11 引言1.1 围棋简介围棋在我国的拥有悠久的历史,做为最古老的棋类游戏之一,相传为尧所创

13、,历史上最早的的记载,可从先秦典集中查阅得到,在那时,围棋还不叫做围棋,而是叫对弈,确切的说,围棋应该叫弈,而对弈则指的是下棋,史书上最早的记载,是在襄公二十五年,一句“今宁子视君不如弈棋,其何以免乎?”由此可见,在最早时期,围棋便为士大夫们所推崇,被定义为君子之间的游戏。而围棋的规则很简单,即棋子分黑白,一般正式比赛中都会有181颗黑子,180颗白子,在361个交叉点构成的棋局上,胜利条件也很简单,以最终棋面上的黑/白子数量判断优胜,或者经双方同意,在一方中途认输或者双方联系使用虚着时,方为终局。而就是这简简单单的黑白棋子对弈,却可以产生万千变化,生出无限对弈之法,因此历史上也产生了非常多的

14、棋痴。其中最出名的便是淝水之战的谢安,相传前秦大将带符坚率大军来犯晋国,打到淮肥时,朝野震动。当时一代名相,顶着巨大压力,一边在和侄儿下棋,一边关注着前方战场,挥斥方遒,最终出现了史上赫赫有名的淝水之战。打的秦兵是风声鹤唳,草木皆兵,谢安的这种临危不乱,坚定沉着的风度令人叹服,而毫无疑问,这也是对弈才能培养出来的气定神闲,悠然自在。随着时代的不断发展,围棋的规则也经历了大大小小的多次改变,其中最出名的便是,在民国期间,围棋受日本影响,取消座子和还棋头,通过计算地域的方式来决出胜负。因此而形成了“子空皆地”的数子方法。因围棋能培养孩子的耐心,帮青少年集中注意力,开发智力,所以越来越多的家长从小便

15、培养孩子的兴趣,让围棋有着超乎其他项目的大众基础,同时随着更多的人参与到围棋项目中来,也让围棋本身在继承传统的过程中,取得了长足的发展。目前世界范围内主要有三种最常用的规则。分别是中国大陆采用的数子规则,台湾采用应氏计点规则,日韩采用数目规则。因为黑方先行存在一定的优势,所以所有规则都采用了贴目制度。而本项目则主要采用的是大陆的数字规则。1.2 开发背景 随着时代的进步,以及人工智能的不断发展,计算机已经拥有能够在短期内运算出,超越人类极限的运算能力。比较出名的有在一九九七年的时候,当时计算机大亨ibm,通过其研制的“深蓝”电脑,战胜了当时在世界范围内,都是极其优秀选手的卡帕罗夫,而前一段声名

16、鹊起的由谷歌研制的alphago,更是打败了世界排名第二的李世石,尽管现今世界排名第一的还是我国选手柯洁,但柯洁也表示,对于人工智能的发展倍感压力。和象棋不同的是,象棋有着明确的吃子规则以及打法,但围棋吃子规则虽然十分简单,但却更加博大精深,纷繁复杂,棋手对弈之间,也大多靠经验和现场实情来进行判读分析,但这种经验对于计算机而言却很难描述,所以,对于计算机而言是一个非常困难。目前,棋类算法主要有两大类:基于模式匹配和使用博弈树。这在国际象棋中的运用可以追溯到五、六十年代,且而十分成功。现如今随着人工智能的不断发展,其可以通过不断的学习分析其他棋手的经验和思路,进而通过演算得出最佳的路线和方法,但

17、同时也局限于现今所有的棋局案例和棋手经验,很难自行推演出自己的一套方案。而本项目在正式开发前,先对以上两种算法进行了对比分析,其中:(1)模式匹配在象棋中,棋子是有限的,走法也相对固定,所以比较容易固定好总结,可以通过对不同类的身份棋子进行不同类的归纳总结,但围棋则不然,虽然只有黑白两子,种类上比之象棋减少了,但打法上却不遑多让,特别是在围棋中有一个专业名词叫“愚形”,就是专指那些效率差的棋子,也就是废棋,但如何认定废棋,如何避免在不必要的地方落子,这样模糊的判定对于计算机而言,确实非常难以量化实现的,所以围棋在模式匹配上虽然种类简易,但实现起来的难度确实一点都不低。(2)搜索算法围棋的算法本

18、身就十分复杂,要做到搜索的话,那就要付出更多的代价,首先在围棋打法中,其数据存储的量是十分可观的,虽然也是又穷,但量级已经达到惊人的100200次方的量级,而象棋的走法上最多也不过20100次方量级,两者之间的差距显而易见。因此对于这样庞大的量级,在全局使用搜索算法的可行性极低,所以一般情况下,做游戏开发的工作人员大都选择在局部明确目标的情况下,使用博弈树来进行搜索。这样也能更有效的实现算法搜索。1.3 国内外研究现状对于像围棋这样一项,具有广泛群众基础的传统游戏,开发一款能够在pc端进行对弈的程序,毫无疑问,不仅能受到广大爱好者的追捧,同时能够极大降低了对弈成本和效率。不过对于这样的一款项目

19、,其困难程度也是显而易见的,其不仅会涉及到围棋、计算机、数学、生物等各大领域,更是可能会涉及到哲学领域,所以研发一款智能的围棋游戏,不仅对于程序员是一个巨大的考验,同时也是人类发展过程中,需要面临的巨大困难。不过所谓机遇与挑战并存,如若这样的一门技术能够发展成熟,那其对计算机领域乃至生物领域的影响都是举足轻重的。不仅仅是在研究计算机围棋,更是通过一个实际项目来探索机器智能、揭秘人类和其他动物在发展过程中最大的不同,即人类的学习能力。在国外,围棋游戏的研发重点基本上在对人工智能领域的研究,通过对机器智能的不断发展,让机器在有效的时间内运算大量的数据,将围棋看似无穷的方法通过有穷的数字列举出来,并

20、将每一项方法学习掌握,目前发展最好的代表就是,谷歌公司投资研制的alphago围棋人工智能,他不仅战胜了此前世界排名第二的李世石,更是以一种摧枯拉朽之势向世界宣布人工智能时代的到来。而国内,则主要倾向于围棋游戏的研制,伴随着计算机性能的不断提高,游戏的可能性也越来越超乎人们的想象,国内在围棋方面的发展更是如此,所以在这样的大环境下,本项目旨在研制一款基于pc终端针对围棋爱好者的娱乐项目。2 开发技术和环境2.1开发技术及工具简介2.1.1 java技术简介随着时代的不断发展,基于计算机终端开发的软件也提出了越来越多的要求,开发语言不仅要求其跨平台性,开放性还要拥有分布性,而由sun公司开发的j

21、ava语言,经过不断的发展和历史的检验,证明其是这样一款符合这样多重需求的开发语言。因为其具备着c语言、c+语言等不具备的多种优势。(1)简单性首先,java技术要比c+语言简单的多,去除了c+中一些不是非常重要的功能,同时能够实现自动回收垃圾、简化了管理内存的工作。其在语法结构上也十分易懂,方便操作。(2) 面向对象java的面向对象,是其高于c语言的主要成就,即java可以实现对现实生活中类的总结,进行封装的状态变量和方法,由此来提供对对象原型的实现,甚至还通过继承和重载等机制,来实现代码的复用,以及子类和父类关系的处理。(3) 多线程多线程是指在运行程序时,并不局限于只能处理一件任务,而

22、是可以同时处理多种不同的事件,java拥有了这样的机制之后,不仅大大提高了效率,还实现了网络上的实时交互操作,可以实现更多的功能。(4) 安全性java对于安全性的级别是高于c+等语言的,因为java本身不支持指针,所以在java中,一切对内存的访问,都需要经过对对象实例变量来实现,也就是说只有已定义的类中的对象实例才能对内存访问,杜绝了黑客使用欺骗手段来访问对象的私有成员,保护了隐私,同时也避免了指针操作过程中容易产生的错误。(5)可移植性这种可移植性来源于体系结构中立性,另外,java还严格规定了各个基本数据类型的长度。java系统本身也具有很强的可移植性,java编译器是用java实现的

23、,java的运行环境是用ansic实现的。2.1.2 b/s结构在开发过程中,最常见的模式有b/s和c/s两种结构。其中b/s结构(browser/server,浏览器/服务器模式),是在web兴起后的一种网络结构。b/s结构,主要是利用了不断成熟的web浏览器技术,通过浏览器技术来实现其大部分功能。而c/s结构,即client/server(客户机/服务器)结构,是大家熟知的软件系统体系结构,即通过将任务合理分配到client端和server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。使用c/s结构的具体优势有:(1)应用服务器运行数据负荷较轻。最简单的c/s体系结构的数据库应

24、用由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序运行在用户自己的电脑上,对应于数据库服务器,可称为客户电脑,当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻。(2)数据的储存管理功能较为透明。在数据库应用中,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的,前台应用可以违反的规则,并且通常把那些不同的(不管是已知还是未知的)运

25、行数据,在服务器程序中不集中实现,例如访问者的权限,编号可以重复、必须有客户才能建立定单这样的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序不是非常“瘦小”,麻烦的事情都交给了服务器和网络。在c/s体系的下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。(3)软件的定制性强 对于程序的定制性而言,b/s结构是不如c/s的,因为c/s更会针对特殊需求开发相应的软件,对于特定的疑难杂症能有更好的解决方案,同时能够定制专门的程序来实现特定的内容需求。2.2 游戏的设计2

26、.2.1 游戏的组成与结构一个游戏基本上是一个连续的循环,它完成逻辑动作,并在屏幕上产生一个图像,通常是30幅图或更多。图2-1所示的是简化的游戏循环结构:图2-1 游戏循环结构第一步:初始化在这一步中,游戏运行的初始化操作和其他windows 应用程序一样,如内存单元配置、资源采集、从磁盘安装数据等等。第二步:进入游戏循环在这一步中,代码运行进入游戏主循环,此时各种游戏动作和情节开始运行,直到用户退出游戏主循环。第三步:获取玩家的输入信息 在这一步中,处理玩家的输入信息并将其储存到缓存以备下一步人工智能和游戏逻辑使用。第四步:执行人工智能和游戏逻辑这部分包括游戏代码的主体部分,执行人工智能、

27、物理系统和常规的游戏逻辑,其结果产生下一帧屏幕图像。第五步:渲染下一帧图像本步中,用户输入和游戏的人工智能和逻辑执行的结果,用来产生游戏的下一帧动画。这个图像通常放在后备的缓存区内,因此无法看到它被渲染的过程。随后该图像被迅速复制到显示区中。第六步:同步显示使用定时器和等待函数确保游戏和最大帧速同步,通常认为 30 fps 是可以接受的最低速率,而大多数动作游戏玩家将他们的图形调整为不低于 60 fps。第七步:循环返回到游戏循环的入口并重新执行以上步骤。第八步:关闭 这一步结束游戏,表示用户结束主体操作或游戏循环,用户在进行结束前释放所有资源并刷新系统并返回操作系统。在大多数情况下,游戏循环

28、是一个包含了大量状态的fsm(finite state machine, 有限状态自动机)。所有的游戏大都按照这样的结构执行。如图2-2所示,状态的转换是非常连贯的。图2-2 循环的状态转换图2.2.2 游戏的元素游戏中的元素包含:界面(图像),操作界面,游戏性。 首先便是游戏界面的设计,当玩家在的进行游戏时,界面(图像)的风格和具体形式将会在第一时间告诉玩家游戏的大致轮廓。这其中主要包括两点:1,图形技术:2d图形技术,3d图形技术。2,游戏视角:第一人称视角,第三人称视角,俯视角,等轴斜视角,平面横向视角。其次是操作界面的设计,操作界面是玩家和游戏间联系地纽带。良好的操作界面可以提高游戏的

29、品质。其具体表现为:1.输入设备:键盘,鼠标。2.控制键:任何界面系统都包括若干控制键。每个键都有它独特的功能。控制键越多,游戏就越难以掌握。因此简化和优化操作是游戏性的保障。3.键位的可设置:现实情况复杂多变,玩家口味各不相同。如果游戏有很多选项,允许玩家自己来调整以适应实际情况,这就比固定参数,不可调整的做法要好得多。4.操作界面的ai:界面和ai的接合点就是游戏是怎样解释并处理玩家的输入的。最后便是游戏的娱乐性,游戏的娱乐性是玩家和乐趣间的桥梁。它不仅体现在单机上玩家与电脑的对抗中,也体现在多人游戏中二个或更多个人进行的竞争中。游戏性体现了一种游戏与玩家的交互,良好的游戏性是游戏具有可玩

30、度的前提。游戏性常表现在以下方面:游戏的平衡性,游戏的可操作性,游戏的ai。2.2.3 游戏系统的层次游戏系统可分为三个层次:游戏层,引擎层,系统层。如图2-3所示:图2-3 游戏系统(game software system)3 系统分析在一个项目开始之前,一定要明确其目标人群是谁,并一定要明确这些目标人群的需求是什么?所以在本项目开始前,进行了详情的需求分析。3.1可行性分析在经历了软件危机之后,越来越多的人意识到在软件正式开发之前,对其需求进行可行性分析的重要性,而对项目的可行性分析一般从项目开发的技术难易、到经济允许、甚至是社会调查等方方面面的分析和研究,以避造成不必要的损耗,在项目能

31、够完成的基础上,以保证能够以最低代价完成。可行性研究的目的,就是在最短的时间内,用最小的代价,评估一下问题是否能够解决完成。针对该项目,其可行性分析主要包括以下几个方面(1)经济可行性:在经济的可行性分析上,首先项目的变现能力主要体现在,当游戏被研制出来之后,会吸引一群围棋爱好者,而通过这些围棋爱好者的自发宣传和扩散,能够带来极为可观的流量,在拥有了流量入口之后,一切用户变现都显得格外容易,同时在开发过程中的损耗主要集中在开发人员的消耗上,但因为开发人员是自身,所以在开发过程中的损耗同样可以降到最低。(2)市场可行性:市场的可行性主要依赖于围棋爱好者对围棋的需求,伴随着人们群众对围棋的热爱,以

32、及时代的不断发展,可以通过电脑进行围棋对弈,更是能够方便人民大众进行对弈,提高了对弈过程中的娱乐性,降低了对弈所需要的成本开发,可所谓紧紧抓住了这样一群人的需求。(3)技术可行性:在技术上的可行性分析上,主要是分析结合现有的技术,是否能够完成项目工作,同时也要分析,现如今所使用的软硬件是否能够胜任项目开发。首先本项目采用了c/s模式进行开发,对服务器的负荷要求低,其安全性也能够得到保障。所以项目在技术上的依赖性是完全可行的。 综上所述,本项目在开发目标已明确的情况下,技术、经济、市场等各个方面都可行,具有投入少、见效快等优点。可以直接进入实际操作环节,也能够实现在最短的时间内,利用最低的代价,

33、完成项目实践内容。3.2 围棋需求分析3.2.1 项目目标与功能1 围棋棋盘基础设置 棋盘由纵横各十九条等距离、垂直交叉的平行线构成。形成361个交叉点,简称为“点”。在棋盘上标有九个小圆点,称作“星”。中央的星又称“天元”。棋子分为黑白两色,用户可自行选择棋色。游戏以空屏开局,黑子先下,双方轮流下子。2 吃子功能 参考围棋游戏规则,游戏过程中,一方棋子将另一方棋子包围后,自动将对方被包围的棋子清除。3 联机功能 游戏开始后,用户选择单机或是联机。若是选择联机,需要双方都连在同一个局域网中,然后输入对方ip进行连接(ip地址获取方式:开始菜单输入栏输入cmd,在弹出页面输入ipconfig,可

34、获得ipv4地址,输入到游戏页面中的对方ip输入栏中即可)。连接成功后双方选择棋色可进行围棋对弈。4 判定下子合法功能 根据围棋规则,一方棋子形成包围形式,对方棋子则不能下在被此方棋子包围的位置中,若选择此类位置,系统将提示“此处不可放子”。5 自动判断胜方功能 在棋盘不能再落子的情况下,进行判断,再下既不能吃掉对方的棋子又不能扩大自己的地盘时就可以停下来了。这时,双方用自已的棋子把自已的地盘都填满,双方都不能填的就平分,比如双活的公气。等到把自己的地盘都填满了,公共的也都平分完之后,这时棋盘也就被瓜分完毕了,此时就可以数棋了。数完之后黑棋还要倒贴给白棋3.75个子,因为总是执黑者先走的。然后

35、再比较谁的棋子多就行了。也可以不倒贴,但黑棋子数要大于等于185个才算赢,白棋子数要大于等于176个才算赢。3.2.2 功能模块图解 其中,最重要的便是项目整体的功能结构图,详情如图3-1所示。开始联机单机输入ip点击连接选择黑白棋开始游戏判断胜负结束图3-1 系统功能结构图 4 软件总体设计4.1 总体设计在此系统中,大致分为三大功能模块,分别是游戏主界面总体设计、判断下棋的位置、联机实现。游戏主界面总体设计中介绍了该软件进行游戏时的具体的一些操作流程,该模块是整个系统最核心的模块。在判断下棋的位置模块,考虑到有可能棋子会下错位置的情况,所以这个模块是必须的。在联机实现模块,我因为考虑到如果

36、系统只能在一个机器上运行,而游戏必须要有两个人进行,所以可能会导致极大的不方便,考虑到这一点,本人决定实现一种可供用户在两台机器上通过局域网ip连接的方式进行游戏的功能。4.2 游戏的实现目标及框架流程 游戏的框架结构主要由玩家,鼠标和游戏控制组成。玩家通过鼠标控制游戏中棋子走向。如图4-1所示:图4-1 实现流程图4.3 分析模型1. 启动模块当游戏正式启动的时候,程序经历的启动模块示意图,如图4-2所示:启动程序选择游戏方式联机单机开始游戏图4-2 启动流程图2. 选择棋色模块在进入游戏之后,玩家进行角色选择,其示意图如图3-3所示。选择黑白等待对方下子下子 游戏结束图4-3 选择棋色流程

37、图3.联机模块在联机模式下,不同角色间的对弈,其流程如图4-4所示。选择联机输入对方ip是否连接成功 y n重新输入ip游戏开始游戏结束图4-4 联机流程图5 系统的详细设计5.1具体模块功能介绍5.1.1 游戏主界面总体设计 该功能模块是整个系统的核心,是最主要的功能模块,如果没有该模块,那么此款软件设计的将会毫无意义。当用户点击进入系统之后,用户会进入到一个界面,在该界面中右上角用户可以根据自己的选择去选择缩小或者关闭,然后再界面的正中间,用户可以看到一张19乘以19的表格,等距离、垂直交叉,总共形成了361个交叉点,称为“点”,在这个棋盘上用户可以看到标有九个小圆点,称之为“星”,而棋盘

38、最中间的位置我们称之为“天元”。在整个局面的最右方,我设置了几个按钮,一个是单机按钮,这个按钮在进入系统的时候是默认选择的,当点击这个按钮的时候,用户可以在一台机器上分别执黑棋和白棋进行游戏,与之对应的是一个联机按钮,当点击该按钮的时候用户会看到一个输入ip的文本框显示为可输入的状态,在这个模块中,我运用到socket编程,具体编程过程会在代码中体现出来,然后再往下会看到一个连接按钮,这个按钮与之前的联机选择框是绑定在一起的,当用户输入ip后,连接按钮进入可点击的状态,用户可以点击连接按钮与对应的机器进行连接,当两台机器进行连接之后,用户两人可以分别在不同的机器上进行对弈,但前期是两台机器必须

39、都安装了此款软件,规则和用户在一台机器上操作一模一样。再往下用户会看到一个显示框,此框中显示了用户正在准备下的棋子的颜色,还有一个开始的按钮,此按钮相信大多数人都知道它的功能,在这里我就不具体叙述,按钮的下面我设置了一个图形,但是当用户不进行游戏的时候是不会显示的,它是两个图片对应切换,具体图片与用户当前下的棋子的颜色相对应。当用户进入系统后,用户可以点击开始按钮进行游戏。具体的实现代码如下: public mainwindow() try jbinit(); catch(exception e) e.printstacktrace(); private void jbinit() throw

40、s exception choice1.setbackground(new color(244, 254, 239); button1.setbackground(new color(244, 254, 239); / try / / uimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname(); / catch(exception e)e.printstacktrace(); this.setresizable(false); new thread(this).start();/启动监听线程 this.port=1977

41、; this.isinitiative=false;/是否主动连接 this.stopflag=false;/是否继续监听的标志 this.choice1.additem(黑); this.choice1.additem(白); lastpoint=new point(); messagepoint=new point(); this.setsize(470,450); this.settitle(基于java的围棋游戏的设计-杨树青); this.panelgo.setenabled(false);/开始之前屏蔽掉盘面 checkbox1.addmouselistener(new java.

42、awt.event.mouseadapter() public void mouseclicked(mouseevent e) checkbox1_mouseclicked(e); ); this.gostartpoint=this.panelgo.getlocation();/ this.setlayout(borderlayout1); panel1.setlayout(borderlayout2); checkbox1.setcheckboxgroup(checkboxgroup1); checkbox1.setlabel(单机); checkbox2.setcheckboxgroup(

43、checkboxgroup1); checkbox2.setlabel(联机); checkbox2.addmouselistener(new java.awt.event.mouseadapter() public void mouseclicked(mouseevent e) checkbox2_mouseclicked(e); ); label1.settext(对方ip); button1.setlabel(连接); button1.addactionlistener(new java.awt.event.actionlistener() public void actionperfo

44、rmed(actionevent e) button1_actionperformed(e); ); label2.settext( ); button2.setbackground(new color(253, 249, 240); button2.setlabel(开始); button2.addactionlistener(new java.awt.event.actionlistener() public void actionperformed(actionevent e) button2_actionperformed(e); ); panel3.setlayout(gridlay

45、out1); gridlayout1.setrows(8); gridlayout1.setcolumns(1); gridlayout1.sethgap(100); gridlayout1.setvgap(10); panel2.setlayout(borderlayout3); this.panel2.setsize(500,70); panelgo.addmousemotionlistener(new java.awt.event.mousemotionadapter() public void mousemoved(mouseevent e) panelgo_mousemoved(e)

46、; ); panelgo.addmouselistener(new java.awt.event.mouseadapter() public void mouseclicked(mouseevent e) panelgo_mouseclicked(e); ); this.addwindowlistener(new java.awt.event.windowadapter() public void windowclosing(windowevent e) this_windowclosing(e); ); panel3.setbackground(new color(253, 249, 240

47、); panel3.add(checkbox1, null); panel3.add(checkbox2, null); panel3.add(label1, null); panel3.add(textfield1, null); panel3.add(button1, null); panel3.add(choice1, null); panel3.add(button2, null); panel3.add(label2, null); this.panel1.add(this.panelgo,borderlayout.center); this.panel1.add(panel3, b

48、orderlayout.east); this.add(panel2, borderlayout.south); this.add(panel1, borderlayout.center); this.disablelink();/废掉控件 /this.button2.setenabled(false);/废掉开始 this.checkboxgroup1.setselectedcheckbox(this.checkbox1); this.yellowpoint=new point(1000,1000);/初始化一个世纪外的黄点 this.centerwindow(); this.show();

49、 myimage=this.createimage(16,16);/用来纪录有黄点之前的图像 /开始 void button2_actionperformed(actionevent e) if(e.getactioncommand().equals(开始) this.disablelink(); this.checkbox1.setenabled(false); this.checkbox2.setenabled(false); this.button2.setlabel(退出); if(this.issingle() this.panelgo.setenabled(true); else/联机版时 if(this

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论