完整版基于JAVA的五子棋游戏系统设计与实现.docx
《完整版基于JAVA的五子棋游戏系统设计与实现.docx》由会员分享,可在线阅读,更多相关《完整版基于JAVA的五子棋游戏系统设计与实现.docx(45页珍藏版)》请在冰点文库上搜索。
完整版基于JAVA的五子棋游戏系统设计与实现
基于JAVA的五子棋游戏系统设计与实现
专业电子信息工程
学生董永杰
指导老师曾玉
摘要
目前,随着计算机网络的的开展,以计算机技术和网络技术为核心的现代网络技术已经在现实生活和消费中得到了广泛的使用,已经成为多数人群的休闲方式,也为多数人所爱好。
当然,为了满足没有网络同样能娱乐的要求,许多小游戏做成了单机和网络的双功能。
本软件使用JAVA语户端之间的连接,利用多线程技术言实现,通过对图形界面,绘图,布局管理器等去构造出游戏的单机功能,在此根底上,利用SCOKET的知识,建立起效劳器与客来处理效劳器端与客户端之间的数据传输,通信问题,使得客户端和效劳器端之间可以同步的进展处理。
通过对软件的编写,更深化的理解了面向对象的概念,也体会到利用面向对象语言处理一些问题的优势。
同时也加深了对多线程,流套接字等高级技术的理解。
关键词:
多线程;流套接字;数据传输;同步。
ABSTRACT
Atpresent,Withtherapiddevelopmentofcomputernetwork.Takingcomputertechnologyandthenetworktechnologyasthecore,modernnetworktechnologyisalreadyusedinthereallifeandtheproductionandalreadybecametheleisuremodeofthemostpeople.Andmostpeoplelikethem.Ofcourse,it’sapitythattherestillhavesomeclientslackingofnetworkbecauseofvariouscauses.
Inordertosatisfytheaboveclients’requirements.Alargenumberofgames,usuallynamedas“smallgames〞byplayers,aredesignedforinvolvingtwokindsofdifferentfunction.Theformergameisoftenplayedbytheseplayerswhosecomputersneverconnectwiththenetwork.It’scalledforstand-aloneversiongames.Justasitsnameimplies,thelaterisnamedasonlineversiongamesThissoftwareimplementedwithJAVAlanguage,andaccordingtotheunderstandingofSCOKET,GUIandpaintimageichnology.Establishedinthesefoundation,theservercoectswiththemulti-client,andtransmissiontheinformationbetweenmanyclientsusingthemulti-threadproceedingtechnology.itisveryconvenientforbothclientandservertodothesynchronousprocessing.
Throughtothesoftwarecompilation,deepenunderstandingandgrasptothetechnologyaboveunderstandingandholding.
KeyWords:
multiplethread,Socket,transmission-data,synchronism.
第一章绪论
1.1开发背景
随着计算机的快速开展,各种游戏被纷纷请进了电脑。
而像五子棋这类不仅能增强思维才能,进步智力,而且富含哲理,有助于修身养性的棋类游戏更是备受推崇。
这使得那些喜欢下棋,又常常苦于没有对手的棋迷们能随时过足棋瘾。
而且这类软件个个程度颇高,大有与人脑分庭抗礼之势。
其中战胜过国际象棋世界冠军-卡斯帕罗夫的“深蓝〞便是最具说服力的代表,其它像围棋的“手淡〞、象棋的“将族〞等也以其优秀的人工智能深受棋迷喜欢。
五子棋是我国古代的、传统的黑白棋种之一,大约在南北朝时期随围棋一起先后传入朝鲜、日本等地。
现代五子棋日文称之为“连珠〞,英译为“Ren-ju〞,英文称之为“Gobang〞或“FIR〞(FiveinaRow的缩写),亦有“连五子〞、“五子连〞、“串珠〞、“五目〞、“五目碰〞、“五格〞等多种称谓。
通过一系列的规那么变化使连珠五子棋这一简单的游戏复杂化、标准化,而最终成为今天的职业连珠五子棋,同时也成为一种国际比赛棋。
五子棋既有现代休闲的明显特征“短、平、快〞,又有古典哲学的高深学问“阴阳易理〞;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高程度的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场〞的概念,亦有“点〞的连接。
它是中西文化的交流点,是古今哲理的结晶。
五子棋起源于古代中国,开展于日本,风行于欧洲。
它在不同的国度也有着不同的称谓,如韩国人称其为“情侣棋〞;欧洲人称其为“绅士棋〞;日本人称其为“中老年棋〞;美国人那么喜欢将其称为“商业棋〞。
由此可见,尽管国度不同,语言各异,但人们都可以借助这一简单又深奥的棋艺进展交流、比赛,增进友谊。
1.2课题意义
人类之所以不断在进步,是因为我们人类一直不断的在考虑,五子棋游戏程序的开发符合人类进步也是促进人类进步的一大动力之一。
五子棋游戏程序让人们方便快捷的可以下五子棋,让人们在何时都能通过下棋来进步逻辑思维才能,同时也培养儿童的兴趣以及爱好,让孩子更加聪明。
同时,五子棋游戏程序的开发也使得五子棋这个游戏得到了广泛的推广,让世界各地的人们知道五子棋,玩上五子棋,这已经不是局限。
五子棋游戏程序使得越来越多的人喜欢上了五子棋,热爱下五子棋,它是具有很好的带动性的。
随着互联网络的不断普及,越来越多的人可以在网络上就可以与别人下五子棋了。
1.3五子棋游戏的开展与现状
目前,连珠这一棋类运动已迅速在国际上开展起来。
外国人都非常看好这一不起眼的智力游戏,并认为五子棋不仅能进步思维、开发智力、手脑并用、修身养性而且富含哲理,具有东方的神秘和西方的直观,是中西文化的交汇点。
许多国家的人对五子棋都有不同的爱称,例如韩国人把五子棋称之为“情侣棋〞,言下之意是情人之间下五子棋有利于增加情感的交流;欧洲人称之为“中老年棋〞,表示五子棋合适中老年人的生理特点和思维方式;美洲人喜欢将五子棋称之为“商业棋〞,就是说商人谈生意时可边下棋边谈生意,棋下完了生意也谈成了。
由此可见,尽管国度不同,语言各异,但人们都可以借助五子棋这一简单而又深奥的棋艺进展交流、比赛,增进友谊。
当前,有40多个国家和地区都在下五子棋,并有各种规模和级别的比赛。
1989年8月在日本京都、1991年8月在俄罗斯联邦的莫斯科、1993年8月在瑞典、1995年8月在爱沙尼亚的塔林分别举行了第一、二、三、四届世界锦标赛。
除第三届的冠军是爱沙尼亚人之外,其余三届的冠军都是日本人。
五子棋的世界锦标赛,每两年举办一次,其申国竞争也非常剧烈。
日本目前拥有自己的五子棋职业棋手,并且对连珠〔五子棋〕技术的研究也相当普遍和全面,就程度也正在日益增强。
同时,五子棋的理论研究与探究也呈现蓬勃开展的势头,从1858年第一部五子棋专著问世以来,目前,全世界有2000多种五子棋的书籍及期刊,分别以日文、俄文、英文、瑞典文及中文出版发行。
五子棋在我国的北京、上海、天津、云南、浙江、广东、四川、湖北、辽宁、新疆、河北等省〔区〕市都有很大的开展。
北京屡次举办了北京地区的五子棋赛,如“思曼杯〞、“京空杯〞、“奇奇童杯〞、“北京第六届民族团结杯〞和“北京第四岂民族运动会〞的五子棋比赛。
上海地区举办了“上文杯〞五子棋大赛。
云南省以及其他省市亦举办过许多五子棋比赛。
所有这些赛事都越来越多地吸引了无数人们的关注,说明了根埴于中国的五子棋有着广泛的群众根底,是群众喜闻乐见的体育活动。
而如今,很多很多游戏平台上面都有五子棋游戏供我们玩,任何游戏平台上面只要有棋牌类游戏的,那么它就有五子棋在里面,网络五子棋比赛,在联众,263,QQ游戏,UC里进展了10几年了。
可见,五子棋游戏在网络上面是非常火暴的。
而且在棋牌游戏里面玩家人数排名总会占到很前面,不愧是风行全球的棋牌游戏啊!
在将来中,将会有越来越多的人关注五子棋,喜欢五子棋,那么将其变为商业化也会越来越多,而且还可以以教育孩子的方式来将其嵌套进去,或者用来做测试等等,可以说以后的五子棋游戏会是那么的精彩,那么的让人憧憬。
那么对于它的游戏开发和开展也将会上升到举足轻重的地位去,它的开展会是相当之快的,就让我们拭目以待吧。
1.4论文的组织构造
本文由第一章绪论,第二章五子棋程序相关技术介绍,第三章五子棋程序分析与设计,第四章软件的详细实现,第五章总结与展望,最后由致谢、附录和参考文献八局部组成。
第一章绪论由研究背景、五子棋的开展前景、五子棋程序的根本步骤和本文的组织构造组成。
第二章介绍软件的开发工具和和软件的根本功能,另外介绍软件所要实现的目的。
第三章软件总体分析与设计。
第四章详细分析软件各模块的设计与实现包括绘制棋盘、下棋功能、判断胜负、下棋信息、时间设置、认输等功能组成。
第五章是总结与展望。
第六章是致谢。
第七章是附录。
第八章是介绍参考文献。
第二章五子棋程序相关技术介绍
2.1软件的根本功能
1)显示一个十五行十五列的围棋棋盘。
2)在棋盘上面在对应位置通过点击鼠标下子,棋盘上将在相应的位置上显示棋子,并且棋子在横纵交点上。
3)可以自动判断游戏是否完毕,是否黑方或者是白方已经成功,并且跳出对话框来提示玩家。
4)在游戏棋盘上方会有一个游戏信息,这个游戏信息是用来提示当前是黑白双方的哪一方下子,玩家可以根据这个提示来相应的下棋,而不会导致不清楚轮到哪一方下棋。
5)可以重新开场游戏,并且有认输功能,在下棋提示上提示哪方时点认输,哪一方就输了,并且有悔棋功能。
6)还可以对游戏时间进展设置,判断是否超出规定的时间,假如超出时间那么自动判断为输。
2.2开发运行环境
1)中心处理器:
IntelCorei5-3230M,2.6GHZ;
2)内存:
4G;
3)硬盘:
750G;
4)操作系统:
WINDOWS7;
5)开发工具:
MyEclipse10;
6)编程语言:
JAVA。
2.3软件的开发手段以及工具的介绍
2.3.1Java简介
Java编程语言的风格非常接近C、C++语言。
Java是一个纯的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心,Java舍弃了C++语言中容易引起错误的指针〔以引用取代〕、运算符重载〔operatoroverloading〕、多重继承〔以接口取代〕等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。
在JavaSE1.5版本中,Java又引入了泛型编程〔GenericProgramming〕、类型平安的枚举、不定长参数和自动装/拆箱等语言特性。
Java不同于一般的编译执行计算机语言和解释执行计算机语言。
它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行〞的跨平台特性。
不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了Java程序的运行效率。
但在J2SE1.4.2发布后,Java的执行速度有了大幅提升。
与传统程序不同,Sun公司在推Java之
际就将其作为一种开放的技术。
全球数以万计的Java开发公司被要求所设计的Java软件必须互相兼容。
“Java语言靠群体的力量而非公司的力量〞是Sun公司的口号之一,并获得了广阔软件开发商的认同。
这与微软公司所倡导的注重精英和封闭式的形式完全不同。
Sun公司对Java编程语言的解释是:
Java编程语言是个简单、面向对象、分布式、解释性、强健、平安与系统无关、可移植、高性能、多线程和动态的语言。
Java平台是基于Java语言的平台。
这样的平台目前非常流行,因此微软公司推出了与之竞争的.NET平台以及模拟Java的C#语言。
Java技术的重要性就不讲了,从最近流行的一个统计数据上来说,目前世界上编程语言Java、C、VB、C++依次排名前4位,这排名本身不说明什么,但至少也是工业界对编程语言使用上一个侧面的反映。
Java编程语言与众不同之处在于:
Java程序既是编译型的〔转换为一种称为Java字节码的中间语言〕,又是解释型的〔JVM对字节码进展解析和运行〕。
编译只进展一次,而解释在每次运行程序时都会进展。
编译后的字节码采用一种针对JVM优化过的机器码形式;解释器是JVM的实现。
Java具有众多优点,比方平台无关性,平安性,面向对象,强健式,分布式等。
与c++相比,Java去掉了其中的指针运算、构造、typedefs、#define、需要释放内存等功能,减少了平常出错的50%,让Java的语言功能很精炼。
而且,因为Java很小,所以整个解释器只需215K的RAM,并增加了一些很有用的功能。
2.3.2MyEclipse10开发环境简介
MyEclipse10是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组效劳,用于通过插件组件构建开发环境。
幸运的是,MyEclipse10附带了一个标准的插件集,包括Java开发工具。
MyEclipse10的本身只是一个框架平台,但是众多插件的支持使得MyEclipse10拥有其他功能相对固定的IDE软件很难具有的灵敏性。
许多软件开发商以MyEclipse10为框架开发自己的IDE。
MyEclipse10是一个开放源代码的软件开发工程,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。
它主要由MyEclipse10工程、MyEclipse10工具工程和MyEclipse10技术工程三个工程组成,详细包括四个局部组成——MyEclipsePlatform、JDT、CDT和PDE。
JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,MyEclipsePlatform那么是一个开放的可扩展IDE,提供了一个通用的开发平台。
它提供建造块和构造并运行集成软件开发工具的根底。
MyEclipsePlatform允许工具建造者独立开发与别人工具无缝集成的工具从而无须分辨一个工具功能在哪里完毕,而另一个工具功能在哪里开场。
虽然大多数用户很乐于将MyEclipse10当作JavaIDE来使用,但MyEclipse10的目的不仅限于此。
MyEclipse10还包括插件开发环境〔Plug-inDevelopmentEnvironment,PDE〕,这个组件主要针对希望扩展MyEclipse10的软件开发人员,因为它允许他们构建与MyEclipse10环境无缝集成的工具。
由于MyEclipse10中的每样东西都是插件,对于给MyEclipse10提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
MyEclipseSDK〔软件开发者包〕是MyEclipsePlatform、JDT和PDE所消费的组件合并,它们可以一次下载。
这些局部在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到MyEclipsePlatform中的工具。
MyEclipseSDK由MyEclipse10工程消费的工具和来自其它开放源代码的第三方软件组合而成。
MyEclipse10工程消费的软件以GPL发布,第三方组件有各自自身的答应协议。
MyEclipse10的根底是富客户机平台〔RichClientPlatform,即RCP〕。
RCP包括以下组件:
●核心平台(启动MyEclipse10,运行插件〕
●OSGi〔标准集束框架〕
●SWT〔可移植构件工具包〕
●JFace〔文件缓冲,文本处理,文本编辑器〕
●MyEclipse10工作台〔即Workbench,包含视图〔views〕、编辑器〔editors〕、视角〔perspectives〕、和向导〔wizards〕〕
MyEclipse10采用的技术是IBM公司开发的〔SWT〕,这是一种基于Java的窗口组件,类似Java本身提供的AWT和Swing窗口组件;不过IBM声称SWT比其他Java窗口组件更有效率。
MyEclipse10的用户界面还使用了GUI中间层JFace,从而简化了基于SWT的应用程序的构建。
MyEclipse10的插件机制是轻型软件组件化架构。
在富客户机平台上,MyEclipse10使用插件来提供所有的附加功能,例如支持Java以外的其他语言。
已有的别离的插件已经可以支持C/C++〔CDT〕、Perl、Ruby,Python、telnet和数据库开发。
插件架构可以支持将任意的扩展参加到现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言。
MyEclipse10的设计思想是:
一切皆插件。
MyEclipse10核心很小,其它所有功能都以插件的形式附加于MyEclipse10核心之上。
MyEclipse10根本内核包括:
图形API
(SWT/Jface),Java开发环境插件(JDT),插件开发环境(PDE)等
2.4软件的实现目的
五子棋游戏程序所要实现的目的是让我们可以在电脑上下棋,而不需要去买,可以随时玩,也可以联机对战,方便快捷。
而且能更好的推广五子棋于世界各地,此软件也在于提供应爱好五子棋的人,也吸引更多的人喜欢上五子棋,也具有很大的商业价值。
使五子棋游戏程序在以后的制作中功能越来越强大,外观越来越好看。
第三章五子棋程序分析与设计
3.1用户需求分析
通过软件功能的分析,根据五子棋爱好者的需求,得出以下需求信息:
1.具有重新开场功能;
2.具有认输功能;
3.具有提示该轮到哪一方下棋的功能;
4.退出游戏功能;
5.判断胜负功能;
6.时间设置功能;
7.五子棋难度选择功能;
8.联机功能。
还有用户对游戏界面的要求,通过上述的用户需求,可以得出一个总体的设计方案。
由上述的用户需要,可以对程序的根本功能进展一个有效的分析,规定下游戏的根本功能。
3.2软件功能构造图
此五子棋程序最主要的五大功能是:
下棋,判断胜负,重新开场与认输,联网游戏的设置与五子棋难度的选择。
大体的功能如图3-1:
图3-1五子棋功能设定图
3.3软件各个功能的简要说明
1.绘制十五行十五列的棋盘:
首先是每行每列的间隔都是一样的,并且棋盘上面有五个星,棋盘中间有个天元点,跟围棋的棋盘一样。
2.点击鼠标以后,会在相应位置落下棋子,并被绘制出来,黑子是一个实心的黑圆,白子是一个实心的白圆加上一个等大空心的黑圆。
棋子落在交点上:
我们在下五子棋棋的时候,棋子都是会落在交点上的,而并非落在格子里面,那么我们就要规定当我点击鼠标时,选取间隔鼠标所取点的最近的左上交点为绘制棋子的中心点,那么就可以实现棋子落在交点上了。
3.黑白双方轮流落子:
黑方落子以后就要轮到白方,交替进展,这是下棋的根本要求,因此我们就要弄一个互斥事件进去,让他们交替的落子。
不能落在一样位置:
当我们落子时,会不小心落到一样位置上去,那么就要出现提示,不能落在一样位置上,需要重新落子,实现的设想是当这个点已经绘制过棋子以后,我们就要给一个布尔变量,让它为假,那么只能在它为真时才能绘制棋子,否那么就要重新落子到别的地方去。
4.判断输赢:
当五个一样颜色子都连在了一起的时候,我们就要判其为赢,这五个子可以在横竖方向上连起,也可以在斜方向上连起。
5.游戏信息:
我们应该在棋盘的上面设置一个游戏信息的,用来提示当前轮到哪一方下棋了,以便于玩家知道谁在下,这个功能只要在黑白双方轮流下棋功能的过程中添加一个提示信息用于显示到界面上的就可以了。
6.重新开场游戏就是把棋盘上的子全部清空,回复到一开场的时候的状态,重置之前所有的数据。
认输的功能就是在判断输赢功能的根底上添加的,让玩家对自己没信心的时候使用。
退出游戏的功能就是直接把窗口关闭就可以了。
7.游戏难度选择:
游戏难度选择是由玩家自主选择的与电脑下五子棋的一个重要方法。
可以根据自身的下棋程度来选择和那种电脑来下。
难度分为三种,分别是:
简单、中等与困难。
而且电脑的思维是根据难度提升而提升。
8.联机对战:
联机对战是为了方便玩家与玩家互相之间商讨棋艺而设定的一大功能模块,可以在一个局域网里面,然后联机对战。
当双方建立联络以后,点击开场就可以进展联网对战了。
这极大的进步了五子棋的娱乐程度。
3.4软件设计中使用到的JAVA软件包以及类和方法
在用JAVA设计软件的时候,使用到SUM公司提供的一些软件包,这样使得我们编写程序更加简便,以下是使用到的软件包:
Javax.swing.JFrame//javax.swing软件包提供一组“轻量级〞〔全部是Java语言〕组件,尽量让这些组件在所有平台上的工作方式都一样。
JFrame类是java.awt.Frame的扩展版本,该版本添加了对JFC/Swing组件架构的支持。
JFrame是用来创立窗体的swing类,用来创立一个图形界面的原始窗口,并且可以设置其大小,位置等属性,是swing编程的根底类之一。
Java.awt//java.awt软件包包含用于创立用户界面和绘制图形图像的所有类。
Java.awt.Toolkit//Toolkit此类是所有AbstractWindowToolkit实际实现的抽象超类。
Toolkit的子类被用于将各种组件绑定到特定本机工具包实现。
Toolkit.geiDefaultToolkit().getScreenSize().width;
Toolkit.geiDefaultToolkit().getScreenSize().height;//以上这两个方法的作用是获得我们电脑显示屏幕的宽度以及高度。
geiDefaultToolkit()为获取默认工具包,假如名为"java.awt.headless"的系统属性被设置为true,那么使用Toolkit的headless实现。
假如不存在"java.awt.headless"或"java.awt.headless"被设置false,且存在名为"awt.toolkit"的系统属性,那么该属性将被视为Toolkit子类的名称;否那么将使用特定于平台的默认Toolkit实现。
getScreenSize()这个方法是获取屏幕的大小。
在具有多个显示屏的系统上,使用主显示屏。
从GraphicsConfiguration和GraphicsDevice可以获得多屏幕感知显示尺寸。
Javax.swing.JOptionPane//