基于JAVA的五子棋游戏系统设计与实现.docx
《基于JAVA的五子棋游戏系统设计与实现.docx》由会员分享,可在线阅读,更多相关《基于JAVA的五子棋游戏系统设计与实现.docx(11页珍藏版)》请在冰豆网上搜索。
基于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.
第一章绪论
开发背景
随着计算机的快速发展,各种游戏被纷纷请进了电脑。
而像五子棋这类不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性的棋类游戏更是备受推崇。
这使得那些喜爱下棋,又常常苦于没有对手的棋迷们能随时过足棋瘾。
而且这类软件个个水平颇高,大有与人脑分庭抗礼之势。
其中战胜过国际象棋世界冠军-卡斯帕罗夫的“深蓝”便是最具说服力的代表,其它像围棋的“手淡”、象棋的“将族”等也以其优秀的人工智能深受棋迷喜爱。
五子棋是我国古代的、传统的黑白棋种之一,大约在南北朝时期随围棋一起先后传入朝鲜、日本等地。
现代五子棋日文称之为“连珠”,英译为“Ren-ju”,英文称之为“Gobang”或“FIR”(FiveinaRow的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。
通过一系列的规则变化使连珠五子棋这一简单的游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国际比赛棋。
五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。
它是中西文化的交流点,是古今哲理的结晶。
五子棋起源于古代中国,发展于日本,风靡于欧洲。
它在不同的国度也有着不同的称谓,如韩国人称其为“情侣棋”;欧洲人称其为“绅士棋”;日本人称其为“中老年棋”;美国人则喜欢将其称为“商业棋”。
由此可见,尽管国度不同,语言各异,但人们都可以借助这一简单又深奥的棋艺进行交流、比赛,增进友谊。
课题意义
人类之所以不断在进步,是因为我们人类一直不断的在思考,五子棋游戏程序的开发符合人类进步也是促进人类进步的一大动力之一。
五子棋游戏程序让人们方便快捷的可以下五子棋,让人们在何时都能通过下棋来提高逻辑思维能力,同时也培养儿童的兴趣以及爱好,让孩子更加聪明。
同时,五子棋游戏程序的开发也使得五子棋这个游戏得到了广泛的推广,让世界各地的人们知道五子棋,玩上五子棋,这已经不是局限。
五子棋游戏程序使得越来越多的人喜欢上了五子棋,热爱下五子棋,它是具有很好的带动性的。
随着互联网络的不断普及,越来越多的人可以在网络上就能够与他人下五子棋了。
五子棋游戏的发展与现状
目前,连珠这一棋类运动已迅速在国际上发展起来。
外国人都十分看好这一不起眼的智力游戏,并认为五子棋不仅能提高思维、开发智力、手脑并用、修身养性而且富含哲理,具有东方的神秘和西方的直观,是中西文化的交汇点。
许多国家的人对五子棋都有不同的爱称,例如韩国人把五子棋称之为“情侣棋”,言下之意是情人之间下五子棋有利于增加情感的交流;欧洲人称之为“中老年棋”,表示五子棋适合中老年人的生理特点和思维方式;美洲人喜欢将五子棋称之为“商业棋”,就是说商人谈生意时可边下棋边谈生意,棋下完了生意也谈成了。
由此可见,尽管国度不同,语言各异,但人们都可以借助五子棋这一简单而又深奥的棋艺进行交流、比赛,增进友谊。
当前,有40多个国家和地区都在下五子棋,并有各种规模和级别的比赛。
1989年8月在日本京都、1991年8月在俄罗斯联邦的莫斯科、1993年8月在瑞典、1995年8月在爱沙尼亚的塔林分别举行了第一、二、三、四届世界锦标赛。
除第三届的冠军是爱沙尼亚人之外,其余三届的冠军都是日本人。
五子棋的世界锦标赛,每两年举办一次,其申国竞争也十分激烈。
日本目前拥有自己的五子棋职业棋手,并且对连珠(五子棋)技术的研究也相当普遍和全面,就水平也正在日益增强。
同时,五子棋的理论研究与探索也呈现蓬勃发展的势头,从1858年第一部五子棋专着问世以来,目前,全世界有2000多种五子棋的书籍及期刊,分别以日文、俄文、英文、瑞典文及中文出版发行。
五子棋在我国的北京、上海、天津、云南、浙江、广东、四川、湖北、辽宁、新疆、河北等省(区)市都有很大的发展。
北京多次举办了北京地区的五子棋赛,如“思曼杯”、“京空杯”、“奇奇童杯”、“北京第六届民族团结杯”和“北京第四岂民族运动会”的五子棋比赛。
上海地区举办了“上文杯”五子棋大赛。
云南省以及其他省市亦举办过许多五子棋比赛。
所有这些赛事都越来越多地吸引了无数人们的关注,表明了根埴于中国的五子棋有着广泛的群众基础,是群众喜闻乐见的体育活动。
而现在,很多很多游戏平台上面都有五子棋游戏供我们玩,任何游戏平台上面只要有棋牌类游戏的,那么它就有五子棋在里面,网络五子棋比赛,在联众,263,QQ游戏,UC里进行了10几年了。
可见,五子棋游戏在网络上面是非常火暴的。
而且在棋牌游戏里面玩家人数排名总会占到很前面,不愧是风靡全球的棋牌游戏啊!
在未来中,将会有越来越多的人关注五子棋,喜欢五子棋,那么将其变为商业化也会越来越多,而且还可以以教育孩子的方式来将其嵌套进去,或者用来做测试等等,可以说以后的五子棋游戏会是那么的精彩,那么的让人憧憬。
那么对于它的游戏开发和发展也将会上升到举足轻重的地位去,它的发展会是相当之快的,就让我们拭目以待吧。
论文的组织结构
本文由第一章绪论,第二章五子棋程序相关技术介绍,第三章五子棋程序分析与设计,第四章软件的具体实现,第五章总结与展望,最后由致谢、附录和参考文献八部分组成。
第一章绪论由研究背景、五子棋的发展前景、五子棋程序的基本步骤和本文的组织结构组成。
第二章介绍软件的开发工具和和软件的基本功能,另外介绍软件所要实现的目标。
第三章软件总体分析与设计。
第四章详细分析软件各模块的设计与实现包括绘制棋盘、下棋功能、判断胜负、下棋信息、时间设置、认输等功能组成。
第五章是总结与展望。
第六章是致谢。
第七章是附录。
第八章是介绍参考文献。
第二章五子棋程序相关技术介绍
软件的基本功能
1)显示一个十五行十五列的围棋棋盘。
2)在棋盘上面在对应位置通过点击鼠标下子,棋盘上将在相应的位置上显示棋子,并且棋子在横纵交点上。
3)可以自动判断游戏是否结束,是否黑方或者是白方已经胜利,并且跳出对话框来提示玩家。
4)在游戏棋盘上方会有一个游戏信息,这个游戏信息是用来提示当前是黑白双方的哪一方下子,玩家可以根据这个提示来相应的下棋,而不会导致不清楚轮到哪一方下棋。
5)可以重新开始游戏,并且有认输功能,在下棋提示上提示哪方时点认输,哪一方就输了,并且有悔棋功能。
6)还可以对游戏时间进行设置,判断是否超出规定的时间,如果超出时间则自动判断为输。
开发运行环境
1)中心处理器:
IntelCorei5-3230M,;
2)内存:
4G;
3)硬盘:
750G;
4)操作系统:
WINDOWS7;
5)开发工具:
MyEclipse10;
6)编程语言:
JAVA。
软件的开发手段以及工具的介绍
Java简介
Java编程语言的风格十分接近C、C++语言。
Java是一个纯的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心,Java舍弃了C++语言中容易引起错误的指针(以引用取代)、运算符重载(operatoroverloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。
在JavaSE版本中,Java又引入了泛型编程(GenericProgramming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
Java不同于一般的编译执行计算机语言和解释执行计算机语言。
它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。
不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了Java程序的运行效率。
但在J2SE发布后,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,并增加了一些很有用的功能。
MyEclipse10开发环境简介
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)等
软件的实现目的
五子棋游戏程序所要实现的目的是让我们可以在电脑上下棋,而不需要去买,可以随时玩,也可以联机对战,方便快捷。
而且能更好的推广五子棋于世界各地,此软件也在于提供给爱好五子棋的人,也吸引更多的人喜欢上五子棋,也具有很大的商业价值。
使五子棋游戏程序在以后的制作中功能越来越强大,外观越来越好看。
第三章五子棋程序分析与设计
用户需求分析
通过软件功能的分析,根据五子棋爱好者的需求,得出以下需求信息:
1.具有重新开始功能;
2.具有认输功能;
3.具有提示该轮到哪一方下棋的功能;
4.退出游戏功能;
5.判断胜负功能;
6.时间设置功能;
7.五子棋难度选择功能;
8.联机功能。
还有用户对游戏界面的要求,通过上述的用户需求,可以得出一个总体的设计方案。
由上述的用户需要,可以对程序的基本功能进行一个有效的分析,规定下游戏的基本功能。
软件功能结构图
此五子棋程序最主要的五大功能是:
下棋,判断胜负,重新开始与认输,联网游戏的设置与五子棋难度的选择。
大体的功能如图3-1:
图3-1五子棋功能设定图
软件各个功能的简要说明
1.绘制十五行十五列的棋盘:
首先是每行每列的距离都是一样的,并且棋盘上面有五个星,棋盘中间有个天元点,跟围棋的棋盘一样。
2.点击鼠标以后,会在相应位置落下棋子,并被绘制出来,黑子是一个实心的黑圆,白子是一个实心的白圆加上一个等大空心的黑圆。
棋子落在交点上:
我们在下五子棋棋的时候,棋子都是会落在交点上的,而并非落在格子里面,那么我们就要规定当我点击鼠标时,选取距离鼠标所取点的最近的左上交点为绘制棋子的中心点,那么就可以实现棋子落在交点上了。
3.黑白双方轮流落子:
黑方落子以后就要轮到白方,交替进行,这是下棋的基本要求,因此我们就要弄一个互斥事件进去,让他们交替的落子。
不能落在相同位置:
当我们落子时,会不小心落到相同位置上去,那么就要出现提示,不能落在相同位置上,需要重新落子,实现的设想是当这个点已经绘制过棋子以后,我们就要给一个布尔变量,让它为假,那么只能在它为真时才能绘制棋子,否则就要重新落子到别的地方去。
4.判断输赢:
当五个相同颜色子都连在了一起的时候,我们就要判其为赢,这五个子可以在横竖方向上连起,也可以在斜方向上连起。
5.游戏信息:
我们应该在棋盘的上面设置一个游戏信息的,用来提示当前轮到哪一方下棋了,以便于玩家知道谁在下,这个功能只要在黑白双方轮流下棋功能的过程中添加一个提示信息用于显示到界面上的就可以了。
6.重新开始游戏就是把棋盘上的子全部清空,回复到一开始的时候的状态,重置之前所有的数据。
认输的功能就是在判断输赢功能的基础上添加的,让玩家对自己没信心的时候使用。
退出游戏的功能就是直接把窗口关闭就可以了。
7.游戏难度选择:
游戏难度选择是由玩家自主选择的与电脑下五子棋的一个重要方法。
可以根据自身的下棋水平来选择和那种电脑来下。
难度分为三种,分别是:
简单、中等与困难。
而且电脑的思维是根据难度提升而提升。
8.联机对战:
联机对战是为了方便玩家与玩家相互之间切磋棋艺而设定的一大功能模块,可以在一个局域网里面,然后联机对战。
当双方建立联系以后,点击开始就可以进行联网对战了。
这极大的提高了五子棋的娱乐程度。
软件设计中使用到的JAVA软件包以及类和方法
在用JAVA设计软件的时候,使用到SUM公司提供的一些软件包,这样使得我们编写程序更加简便,以下是使用到的软件包:
etScreenSize().width;
().getScreenSize().height;
;
/**
*构造棋盘和算法
*
*/
/**
*原则:
*1、如果已经有子,表示该位置不可再下子,value值为0;
*2、value值为1-100,表示为初始值;
*3、value值为1000,表示优先级为1即自己下该位置就五个了(自己必赢的情况下,优先级最高)
*4、value值为990,优先级为2即对方下该位置就五个了(对方必赢的情况下,自己就该堵住对方,优先级其次)
*5、value值为980,优先级为3即自己下该位置就四三连(四四连)(优先级第三)
*6、value值为970,优先级为4即对方下该位置就四三连(四四连)(优先级第四)
*7、value值为960,优先级为5即自己下该位置就三连(三三连)(优先级第五)
*8、value值为950,优先级为6即对方下该位置就三连(三三连)(优先级第六)
*以上都是必胜或者必败的情况。
*9、其余情况从100为始值,采取加值处理。
*/
publicclassQipanextendsJComponentimplementsRunnable{
privatestaticfinallongserialVersionUID=560796L;
publicstaticintdifficulty=1;privateint[][]qizi;privateint[][]value;
privateintresult=0;件开发课堂.2009(01)北京:
清华大学出版社
[2]编程思想.2003(10)机械工业出版社
[3]林尧瑞,马少平.人工智能导论[M].2002(09)北京:
清华大学出版社
[4]蒋加伏,陈蔼祥,唐贤英.基于知识推理的博弈树搜索算法[J].2004(01)中南大学:
计算机工程与应用
[5],Serch&[J],ErasmusUniver