推荐五子棋网络对战系统 精品Word文档下载推荐.docx
- 文档编号:19392248
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:19
- 大小:165.95KB
推荐五子棋网络对战系统 精品Word文档下载推荐.docx
《推荐五子棋网络对战系统 精品Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《推荐五子棋网络对战系统 精品Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
本人完全了解福州大学至诚学院有关保留、使用学位的规定,即:
学院有权保留送交的印刷本、复印件和电子版本,允许被查阅和借阅;
学院可以公布的全部或部分内容,可以采用影印、缩印、数字化或其他复制手段保存。
保密的在解密后应遵守此规定。
指导教师签名:
用JAVA实现五子棋网络对战系统
摘要
现代科学技术正在迅猛的发展着,计算机信息技术在其中发挥着巨大的作用。
在此背景下,Java已经从一种与平台无关的编程语言演变成一种跨平台的服务器端技术,同时JAVA也成了最常用的语言之一。
对比C++语言,Java语言更加简单,Java语言更加容易理解,也没那么容易出错,它的语法结构让人看起来更加简洁清楚。
此外Java语言相对比较晚出现,它在面向对象和多线程特性上相对其他计算机语言有了很大的进步,而且在Java语言中比较容易实现算法,可以大大缩短了我们编写程序的时间,同时写出来的Java代码也比较容易得到复用和移植。
基于以上优点,本文采用Java语言实现一款五子棋网络对战系统。
此次游戏设计采用Eclips作为开发环境,运用了最传统的游戏规则,即出现连续五颗相同颜色的棋子则获得胜利。
并且只需用鼠标点击就可以实现这个游戏所有操作:
开始游戏、落子、投降、求和。
这种设置老少皆宜,让所有的人都可以无障碍的玩这游戏,并配合简洁的游戏界面,让玩家体验到五子棋的趣味性。
关键词:
Java,五子棋,对战系统
BackgammonOnlinePlaySystemwithJAVA
Abstract
Withthedevelopmentofmoderntechnologyofscience,theputerInformationTechnologyplaysanimportantroleinit.Underthissituation,Javahaschangedfromashapelessprogramminglanguagetocross-platformsever-sidetechnology.Atthesametime,Javahasbeetheoneofmostmonlyusedlanguage.ContrastingtoC++,Javalanguageismoresimple,moreeasilyunderstoodandnotsoeasytomakemistakes.Itsgrammaticalstructureisseentobemoreconciseandclear.Inaddition,Javalanguagerelativelylatetoappearonthecharacteristicsofobject-orientedandmulti-threaded,ithasbeengreatprogressrelativetootherputerlanguages,andtheJavalanguagerelativelyeasytoimplementthealgorithmcangreatlyshortenthetimeofourprogram,whilewriteoutJavacodereuseisrelativelyeasytogetandtransplantation.Therefore,becauseoftheadvantagesofJavalanguage,soIchosetouseJavalanguagetopilethegame.ThegamedesignEclipseasthedevelopmentenvironment,theuseofthetraditionalrulesofthegame,theconsecutivewinfiveofthesamecolorpieces.Andonlyamouseclickyoucanachievethisgamealloperations:
startthegame,Lazi,surrender,summation.Thissettingallages,sothatallpeoplecanplaythisgameaccessible,andwithasimplebackgroundpicture,allowingtheplayertoexperiencethegobangfun.
Key
Words:
Java,,BattleSystem
第1章绪论
1.1研究背景
在当代,计算机的技术不断的发展,网络这一技术普及范围也越来越广,网络已经应用到了世界的各个角落,它为人们提供各种各样的服务,让人们的生活更加的丰富多彩,甚至不知不觉中已经成为人们生产中不可少的部分,与此同时,在网络普及的过程中,游戏也在逐渐得到人们的认同。
如今网络休闲游戏凭借着其健康、方便、益智等优点迅猛的发展着,也因此各大游戏对战平台层出不穷,比如大家耳熟能详的QQ对战平台。
这些游戏已经成为了大部分现代人休闲娱乐的重要部分。
1.2研究意义
Java是一门经过充分发展,比较成熟的语言,Java语言在企业级应用称霸这些年念头,已经充分证明了它非常适合于开发大型软件。
这对于规模越来越庞大的游戏软件来说,有着不小的诱惑[1]。
它拥有一套属于自己的庞大并且较为完善的类库,内置了其他语言需要靠库甚至是才能支持的功能,总而言之,JAVA语言的出现带给了整个业界巨大的冲击,为整个IT业带来深远的影响。
Java产生与流行是Internet发展的客观要求;
Java可以制作大部分网络应用程序系统,而且与如今流行的浏览器结合很好;
它是一种区别于传统系统,遵守"
网络就是计算机"
信条的平台技术[2]。
计算机的普及,以及网络的发展使得网络游戏的需求日益增长,同时作为传统游戏的五子棋,因为它本身所具有简单方便等特点,使得它在世界各地都有大量的玩家。
基于C/S模式使用JAVA语言开发的五子棋网络对战系统,将五子棋游戏移植到到网络对战平台当中无疑非常适应现代的潮流,与我们的娱乐理念相吻合,而且我相信开发游戏对战系统具有很强的可操作性,也有很大的空间。
1.3课题的内容
本课题设计实现了五子棋网络对战系统。
通过简单的登录,玩家可以进行五子棋对战。
在游戏中,本着先排队先开始的原则,让最先进入游戏的玩家最先找到游戏对手,以此减少玩家的等待时间。
在游戏中,玩家如果想退出,则可以通过点击投降或者求和的按钮来结束游戏,其中求和需要对方玩家的同意。
如果玩家分出了胜负,系统会提示胜负信息,点击确定按钮,则退出游戏,状态由“游戏中”变成“空闲中”。
1.4组织结构
本文描述的是用Java开发的五子棋对战系统,共分为5章:
第1章:
先是介绍了用Java开发五子棋网络对战系统的研究背景,研究利用Java语言开发游戏的意义,然后对玩游戏的流程的内容进行基本的介绍,最后介绍了本文各个章节的组织结构。
第2章:
先介绍了本系统所用到的开发工具Eclipse,然后分析了开发语言Java的特点,最后简要的介绍了这次系统所用到的游戏引擎GameEngine。
第3章:
先介绍了游戏的基本流程,然后用列表的形式来介绍游戏中所用到的类及类的功能,接着对游戏进行说明,最近简述了游戏的资源和构架。
第4章:
先简述了游戏概要设计说明,然后对游戏的各个界面进行介绍,最后对游戏的功能模块实现进行介绍并解释关键代码。
第5章:
先简要说明了软件测试的方案,然后利用表格的形式对软件进行测试并说明结果
在的末尾,我对该五子棋网络对战系统的设计过程所遇到的一些问题进行了总结。
第2章相关技术介绍
2.1开发工具
本课题采用的开发工具是Eclipse。
Eclipse是一个开放的、基于的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,)[3]。
在本次五子棋对战系统中,设计对话框时我用到了Java其中的一种叫Swing的插件,Swing是一个用于开发Java应用程序用户界面的开发工具包。
它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格[4]。
当我们在使用Swing开发时,只要通过Swing的功能就可以大大减少我们的代码量,达到事半功倍的效果,同时还可以丰富我们所创建的用户界面。
其中使用Swing创建图形界面时需要这些步骤:
首先导入Swing包,然后选择界面风格,也可以插入我们所需要的图形,在对话框中添加所需要的按钮和标签等,然后再将组件放置到容器上,最后设置好按键的功能,这样基本就完成了Swing的使用。
2.2开发语言
自1995年SunMicrostems公司推出Java以来,人们不断挖掘Java编程系统的潜力,直到现在已经得到了全世界的认可[5].Java编程语言是一种通用的,并发的,阶级基础,面向对象的语言[6]。
它与一般的和有着很大的区别。
它首先将源代码编译成,然后利用各个不同平台上的虚拟机来解释那些执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。
Java技术的应用非常广泛,小到个人PC、移动电话,大到互联网、科学超级计算机等等。
从整体上来说,Java编程语言的风格与语言有一些相似之处。
它继承了C++语言面向对象技术的核心,Java舍弃了C++语言中容易引起错误的,改以取代,同时移除原C++与原来,也移除特性,改用取代,增加功能。
具体来说,它具有如下特性:
(1)Java这门语言简单好学,也非常的好用。
Java语言是在C与C++计算机语言的基础上进行简化和改进的一种新型计算机语言,它去除掉了C和C++中最难理解的多重继承技术和最难正确应用的指针等内容[7]。
用过C++的开发游戏的程序员都知道,内存管理是最容易出错误的地方,申请的内存用完以后必须释放,要不然慢慢的可使用的内存资源会越变越少,直到耗尽系统资源后会导致死机。
但Java能通过垃圾自动回收机制简化了程序内存管理,统一了在不同操作系统平台上不同的数据类型所占用的内存大小的标准,毫无疑问这对于编程来说有着相当大的用处的。
(2)基于对象的编程很符合程序员的思维模式习惯,让我们在编写程序时显得更加得心应手。
Java语言与其它面向对象语言一样,引入了类的概念,类是用来创建对象的模板,它包含被创建的对象的状态描述和方法的定义[8]。
(3)每当比较Java与其他语言的时候,跨平台总是被人们提及到,因为这是Java一个非常重要的特点。
由于它采用先编译成中间码,然后装载与校验,再解释成不同的机器码来执行,“屏蔽”了具体的“平台环境”特性要求,正因为这样,只要能支持Java虚拟机,那么就可运行各种Java程序[9]。
Java系统可以运行在不同的操作系统和硬件上。
由于Java的跨平台,Javaapi自然也是平台统一的。
我们只要拿Javaapi与C++的类库相比便可以知道它的可贵之处。
因为对于程序员而言,统一的api函数能够让他们减轻负担,就可以省略掉其中一些不必要的麻烦。
(4)Java相对来说比较安全,经常使用网络的人通常都有一个担心,生怕网络上的各种有毒网站以及各种盗取私人文件的钓鱼网,甚至是下载到含有恶意代码的文件,他们会破坏我们的计算机系统。
但是当我们使用支持Java的浏览器时,我们就可以放心地运行Java的小应用程序JavaApplet,不必担心异常状况,因为我们可以确保在网络上运行的Java程序都是符合网络安全协议的。
Java小应用程序将限制在Java运行环境中,它不会访问或修改不允许访问的内存或文件。
(5)类是Java程序的基本组成单元,其中一部分类是我们自己编写的,一部分是引用类库中的,而类是运行时动态才进行装载的,这就使得Java可以在分布环境中动态地维护程序及类库。
(6)在操作系统中,进程和线程是两个非常重要的基本概念。
在执行过程中,进程有自己独立的内存空间和系统资源,并且各个进程的内存数据和状态彼此之间并无相关,类似于管道的方法,通过特定的通信机制来完成交换数据。
线程是在进程中产生的一种轻负荷进程,线程在执行过程中共享一块内存空间和一组系统资源,因此线程之间可以直接进行数据交换[10]。
2.3游戏引擎
游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件,这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始,大部分都支持多种操作平台,如Linux、MacOSX、微软Windows。
游戏引擎主要是包含以下系统:
渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理[11]。
本课题五子棋网络对战系统所使用的游戏引擎为GameEngine,有较强的实用性,简单易学,非常方便。
它是由福大师生自主研发设计的一款游戏引擎工具,由本人的导师提供。
第3章系统框架
3.1游戏的基本流程
本游戏运用了C/S模式,在游戏开启服务端后,我们需要点击“启动”按键,这样才可以连接服务端,登录客户端后,我们要进行填写昵称,然后登陆游戏,接着再点击“寻找对手”按键就可以进入等待排队状态,只要出现也在等待的对手,就可以进入游戏,开始游戏,如果玩家想要放弃棋局则可点击投降来结束比赛,亦或者发现棋局将以和棋为结局,则可点击“和棋”按钮来结束比赛。
如果比赛正常结束,则系统将会出现胜负的提示。
图3-1为下五子棋的流程。
和棋
图3-1游戏流程
3.2游戏中主要的类及类的功能
表3-3中介绍了游戏中所用到的主要类,和各个类所实现的功能及实现所用的方法。
表3-3主要类表
主要类名
实现功能
实现的方法
Client
服务端和客户端的连接
connect(),processMsg(Stringmsg)
GD
定义全局数据
无
HallFrame
绘制大厅界面
HallFrame(),run()
LoginFrame
绘制登陆界面
LoginFrame(),run()
QiJu
五子棋判定算法
init(),isEmpty(intcol,intrange),putQZ(intcol,intrange),isFiveLink(intqzColor,intcol,intrange)
WZGameUI
绘制棋盘
WZGameUI(),show(),drawQPLine(Graphgraph),drawQZ(Graphgraph),drawPlayerInfo(Graphgraph),isValidSetPoint(intx,inty)
ClientThread
客户端通信
ClientThread(Sockets),send(Stringstr),voidrun()
Match
寻找对手
toMatch(ClientThreadc)
ServerThread
服务器端主线程
run(),closeServer()
WZServer
服务端界面
main(String[]args),WZServer()
3.3游戏说明
3.3.1行棋顺序
(1)进入游戏后,玩家一会被绑定为黑棋,玩家二会被绑定白棋。
(2)玩家一即黑棋方先手,玩家二后手,一个人一次只能下一个棋子,直至分出胜负为止。
若棋盘下满还没有玩家实现五子连珠,则判定双方为和棋。
3.3.2判断胜负
(1)如果其中一个玩家能最先在棋盘水平方向、竖直方向、45度斜方向形成连续的相同颜色的五个棋子,则此玩家为胜利的一方,另一玩家为失败的一方。
(2)如果棋盘下满了还不能分不出胜负,或者其中一个玩家可以点击“求和”,同时另一玩家点击“同意”,则定为平局。
如果另一玩家点击“不同意”,则双方继续游戏。
(3)如果其中一个玩家点击投降,则判定为输家,另一个玩家为胜方。
3.3.3游戏操作说明
在点击服务端界面中的“开启”按钮后,各个玩家都需要在客户端填写自己的昵称,然后才可以进入大厅,接着如果想要开始游戏则需点击“寻找对手”按钮,如果不想玩则点击“离开大厅”,匹配到对手后就可以开始与其他玩家对战了,先进入游戏的玩家执黑棋先手,后进入游戏的玩家执白棋后手,游戏中如果其中一个玩家的棋子在同一水平或者垂直或者斜着连续五个串在一起,则判定胜负,如果玩家点击“求和”的按钮,系统会自动判定双方和棋,如果某一玩家点击“投降”按钮,则系统判定他为负方,游戏直接结束。
3.4游戏资源与架构
本游戏程序架构主要包含代码、图片资源。
具体内容如下:
代码:
编写的JAVA代码放置于工程文件中/src文件夹下。
图片资源:
图片都是png格式文件或bmp格式文件,放置于/IMG文件夹中。
第4章关键技术及主要功能的具体实现
4.1概要设计说明
本游戏程序主要包含服务端界面、登录界面、大厅界面、游戏界面、游戏结果界面。
4.2界面实现
4.2.1服务器界面
服务器界面:
其中包含了启动服务和关闭服务两个按键,如果不启动服务,服务端和客户端就不会连接,这样游戏也无法开始。
图4-1服务器界面
4.2.2登录界面
游戏登录界面:
在这个界面,玩家需要填写自己的昵称,之后才可以登录游戏,如果昵称一栏为空就点击登录游戏会出现错误提示。
图4-2登录界面
图4-3登陆错误提示
4.2.3大厅界面
服务端大厅:
这个窗口会显示玩家的当前状态信息,登录成功后系统会默认玩家为空闲状态,点击“寻找对手后”变成等待游戏状态,玩家如果不想游戏,则点击“离开大厅”,退出服务器。
图4-4大厅空闲状态界面
图4-5等待队列状态界面
4.2.4游戏界面
游戏界面:
主窗体、用户信息(自己)、用户信息(对方)、投降按钮、求和按钮。
游戏中会显示玩家昵称及先后手情况,点击“投降”按钮则结束游戏对战,点击“求和”按钮需要对方玩家的同意才能和棋,对方玩家不同意则玩家会继续正常游戏。
图
图4-6游戏棋盘界面
4.2.5游戏结果界面
游戏结束界面:
不管玩家的输赢,系统都会有游戏结果的提示。
点击其中的“确定”按钮,玩家就会回到游戏大厅。
图4-7游戏结束后赢的界面
图4-8游戏结束后输的界面
4.2.6游戏界面的实现
在游戏界面中,首先导入棋盘的背景,然后对棋盘位置进行设置,代码如下:
intQPTop=10;
intQPLeft=160;
//棋盘左上角位置
intcellWidth=50;
//棋盘格子宽度
然后利用游戏引擎GameEngine来设置“投降”与“求和”这两个按钮:
mb.addButton(newRectangle(10,100,70,50),"
投降"
0);
mb.addButton(newRectangle(10,200,70,50),"
求和"
1);
接着绘制棋盘背景:
graph.drawImage(bk,0,0,1024,768);
再接着绘制棋盘上的线:
graph.getGraphic().drawLine(QPLeft,QPTop+cellWidth*i,QPLeft+cellWidth*14,QPTop+cellWidth*i);
//画横线
graph.getGraphic().drawLine(QPLeft+cellWidth*i,QPTop,QPLeft+cellWidth*i,QPTop+cellWidth*14);
//画纵线
绘制玩家信息:
drawPlayerInfo(graph);
绘制棋子:
intx=QPLeft+cellWidth*i-25;
inty=QPTop+cellWidth*j-25;
4.3功能模块
4.3.1服务端实现
服务端的作用是对数据进行转发,是客户端数据进行交互的枢纽,主要是应用了Java通讯技术socket中的ServerSocket对象,以下几点为服务端的详细功能:
(1)服务端实现的服务的开启功能:
其中开启功能主要是通过端口号去new一个ServerSocket,假设开启监听的端口号是5555,则创建语句为:
ServerSocketServer=newServerSocket(5555);
Threadthread=newThread(Server);
Thread.start();
如果以上语句执行没有异常,则说明服务开启成功。
(2)服务端实现的服务的关闭功能:
实现调用的是socket函数中的close()方法,如Server.close(),如果执行没发生异常,则说明服务关闭成功。
(3)服务端的主线程:
ServerSocketss=null;
booleanisRunning=false;
Vector<
ClientThread>
clients=newVector<
();
然后建立套接字,接着服务端与客户端建立连接,运行与客户端通信的相关线程,其中每一个客户端连接都对应了一个线程,负责与客户端之间的通信。
(4)服务端获取了客户端发送来的信息,并处理这些消息:
while(cont){
Stringstr=dis.readUTF();
processMsg(str);
}
4.3.2客户端实现
客户端提供了用户昵称填写和登陆游戏,同时让玩家选择进入等待队列进行匹配对手,最后进行游戏对战,并且显示服务端发送过来的对手昵称。
具体功能实现如以下几点:
(1)客户端连接:
socket=newSocket("
127.0.0.1"
5555);
cont=true;
recvThread=newRecvThread();
recvThread.start();
其中的端口号必须与服务端创建时候的端口号一致。
(2)客户端断开连接:
cont=false;
state=0;
dos.close();
dis.close();
socket.close();
(3)客户端发送信息给服务端:
dos.writeUTF(str);
(4)将玩家注册的昵称这个信息发送给服务器:
publicvoidLogin(Stringname){
//发送信息给服务器
send("
[name]"
+nam
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 推荐五子棋网络对战系统 精品 推荐 五子棋 网络 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)