网络对战五子棋游戏系统的设计与实现.docx
- 文档编号:7120947
- 上传时间:2023-01-20
- 格式:DOCX
- 页数:31
- 大小:2.75MB
网络对战五子棋游戏系统的设计与实现.docx
《网络对战五子棋游戏系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《网络对战五子棋游戏系统的设计与实现.docx(31页珍藏版)》请在冰豆网上搜索。
网络对战五子棋游戏系统的设计与实现
综合课程设计成绩
学号
姓名
总评成绩
老师签名
综合课程设计报告
题目:
五子棋游戏系统的设计与实现
学院(系):
计算机科学与工程学院网络工程系
学号:
学生姓名:
指导教师:
王勇、黄继平、卢玲
2016年
摘要
计算机的人机游戏是人工智能领域中主要研究的一个部分,为人工智能研究做出了重大的贡献。
通过对相关文献分析研究,按照人工智能和计算机博弈的一般原理做出优化改进,设计了一个智能五子棋游戏。
本文主要在以下三个方面进行研究:
第一,研究了国内外手机游戏的发展状况,调查了五子棋游戏发展现状。
并且对手机开发游戏的平台做出选择。
第二,游戏设计已经成为现在社会的一种热门行业。
五子棋则是很受广大群众喜爱的游戏之一,其规则简单,变化多端,非常富有趣味性和消遣性。
该文利用JAVA技术实现双人对下的五子棋游戏设计
第三,基于开发平台,根据五子棋系统自身的特点开发出了五子棋人机对战游戏,并对程序进行了功能测试和分析。
经过测试,本文开发五子棋游戏能够良好运行,能够满足人机对抗游戏需要。
关键词:
五子棋java游戏设计
Abstract
Computerman-machinegameisapartofthefieldofartificialintelligenceresearch,madeasignificantcontributionfortheartificialintelligenceresearch.Byanalyzingtheliteratureresearch,inaccordancewiththegeneralprinciplesofartificialintelligenceandcomputergametomakeoptimizationimprovement,designedanintelligentgobanggame.
Thisarticlemainlystudiedinthefollowingthreeaspects:
first,studythedevelopmentofmobilephonegamesathomeandabroad,investigatedthegobanggamedevelopmentpresentsituation.Andplatformofmobilephonegamestomakeachoice.
Second,gamedesignhasbecomenowahotsectorofsociety.Gobanggameisverypopularwiththemassesisoneofthe,theruleissimple,changeable,extremelyrichinterestingandrecreational.Inthispaper,usingJAVAtechnologytorealizethedoubleofthegobanggamedesign
Third,basedonthedevelopmentplatform,accordingtothecharacteristicsofthegobangsystemitselfdevelopedgobangman-machinegames,andtheprogramfunctiontestandanalysis.Afterthetest,thispaperdevelopedgobanggameisabletorunwell,abletomeettheneedsoftheman-machinegame.
1绪论
1.1课题背景和研究意义
1.1.1课题背景
1、五子棋的起源
五子棋是一种两人对弈的纯策略型棋类游戏,通常双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成5子连线者获胜。
棋具与围棋通用,起源于中国上古时代的传统黑白棋种之一。
主要流行于华人和汉字文化圈的国家以及欧美一些地区。
容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。
已在各个游戏平台有应用。
许多国家的人对五子棋都有不同的爱称,例如,韩国人把五子棋称为"情侣棋",暗示情人之间下五子棋有利于增加情感的交流;欧洲人称其为"绅士棋",代表下五子棋的君子风度胜似绅士;日本人则称其为"中老年棋",说明五子棋适合中老年人的生理特点和思维方式。
本设计的实现了一个简单的多用户五子棋的游戏程序,包括如下两个界面:
选择对弈桌及角色(执黑、执白);2)在游戏界面有开始,有退出(游戏未结束点击退出时自动判负);发言及显示区;用户列表区;棋盘绘制区。
1.1.2课题国内外研究现状
电脑游戏行业在不断地更新换代中,现如今简单的人机对战已经不能满足玩家的需求,只有顺应时代的发展,不断地推出新产品,更新游戏,开发出更适合不同年龄阶段的人群的游戏。
游戏产业已经占据了大部分的市场额度,已经成为与影视、音乐等并驾齐驱的全球最重要的娱乐产业之一,其年销售额超过好莱坞的全年收入。
互联网的出现为电脑游戏行业发展注入了新的活力,凭借信息的双向交流、速度快、不受空间限制等优势,让真人参与游戏,提高了游戏的互动性、仿真性和竞技性,使玩家在虚拟世界里可以发挥现实世界无法展示的潜能,改变了单机版游戏的固定、呆板、与机器对话的状况。
网络游戏的这些优势不仅使其在电脑游戏行业中的异军突起并在某种程度上取代了单机版游戏,而且成为网络三大(网上金融、网上游戏和网上教育)赢利且利润优厚的领域之一。
网络作为一种新兴的传播方式,主要包括三大内容:
娱乐、资讯、通讯。
提到网络娱乐,过去主要指的是单机版游戏,没有引入网络的概念但随着科技的发展,游戏娱乐产业也在成长目前,国内的游戏娱乐产业正处于起步阶段,特点表现为:
第一,它是一种文化的传播。
娱乐产业可以潜移默化地改变人的观念,当前,很多多媒体的播放以及被电脑网络锁取代。
第二,网络游戏加强了人与人的沟通。
第三,网络游戏具有一定的教育意义。
网络游戏所具有的角色扮演的功能,使得玩家能通过互助更好地完成游戏中的各项任务。
网络不国界,游戏在网络文化产业世界的发展中地位会越来越高。
目前在国外,休闲游戏和棋类等,玩家的年龄跨度非常大,这和我过的目前网游市场以青少年为主要消费人群的状况截然不同。
其实,网络可以解决空间的问题,网络和生活越来越息息相关,因此,开辟适合各个年龄层的游戏产品迫在眉睫。
同事,这也涉及到一个企业的开发能力。
娱乐产业发展到一定程度,通过不断锻炼和经验的累积,完全可以通过融入娱乐的成分把教条的东西深入浅出地展现给消费者。
1.1.3课题研究内容和意义
五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。
本程序是用Java实现的一个基于C/S模式的五子棋网络对战游戏。
Java是一种简单的,面向对象的语言。
因此用Java开发的网络应用系统可以在各种平台上运行,实现了设备无关性,一次开发多处运行,大大增加了开发效率,减少了重复劳动。
玩家作为客户端通过服务器端与其他玩家进行对战,聊天等功能。
本程序作为一种网络游戏,其乐趣是人与人之间的对抗,而不仅仅是人与事先设置的各种程序对抗,所以比普通的人机对战游戏更具有生命力,更具有趣味性。
而且通过事先本程序可以加深对计算机网络编程的了解。
1.2可行性分析
1.2.1技术可行性分析
本系统是基于Java的基础上开发的,使用的技术和协议都是可用的。
1.2.2经济可行性分析
本系统是C/S结构的JAVA程序,在开发工具上使用Myeclipse作为IDE。
整个系统在开发过程及使用中不会产生经济纠纷或不良影响。
1.2.3操作可行性分析
本系统的主要研究方向是在人机对战的基础上,转换人与人的对战模式,该课题在国内外都有比较深入的研究,因此有较为丰富的理论知识。
同时在研究本课题时,也相应的参考了现已有的优秀游戏,如象棋、真人CS等,因此有着整体的发展方向。
本系统的开发过程也严格遵循软件开发过程中的增量迭代模式,有助于及时得到反馈并进行修正。
1.3相关技术概述
1.3.1通信协议
本程序的难点在于与对方需要通信。
这里使用了UDP。
UDP是用户数据报文数据简称,两台计算机之间的传输类似于传递邮件;两台计算机之间没有明确的连接,使用UDP建立对等通信。
在这里,虽然两台计算机之间不分主次,但我们设计游戏是假设一台计算机作为主机(黑方),等待其他人加入。
其他人想加入的时候需要输入主机的IP。
为了区分通信中传送的信息,例如:
“输赢信息”,“下棋位置信息”,“重新开始”等,在发送信息的首部要加上代号。
因此定义了以下协议:
(1)move|下棋的位置坐标(X,Y);
(2)over|哪方赢的信息;
(3)quit|表示游戏结束了,对方离开了;
(4)undo|x|y;悔棋命令,表示撤销刚才自己在(X,Y)坐标位置的落子。
(5)chat|聊天内容;文字聊天协议。
1.3.2Socket技术
基于TCP/IP的网络的Java程序与其他程序通信中,Java程序依靠Socket进行通信。
Socket可以看成为在两个程序进行通信的链接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket,使这段信息能传送到其他程序中。
无论何时,在两个网络应用程序之间发送和接收信息时都需要建立一个可靠的连接,流套接字依靠TCP来保证信息正确地达到目的地。
实际上,IP包有可能在网络中丢失或者在传送过程中发生错误,任何一种情况发生,作为接收方的TCP将联系发送方TCP重新发送这个IP包。
这就是所谓的在两个流套接字之间建立可靠的连接。
流套接字在C/S程序中的扮演一个必须的角色,客户机程序(需要访问某些服务的网络应用程序)创建一个扮演服务器程序的主机的IP地址和服务器程序(为客户端应用程序提供服务的网络应用程序)的端口好的流套接字对象。
客户端流套接字的初始化代码将IP地址和端口号传递给客户端的主机的网络管理软件,管理软件将IP地址和端口号通过NIC传递给服务器端主机;服务器端主机读到通过NIC传递来的数据,然后查看服务器程序是否处于监听状态,这种监听依然是通过套接字和端口来进行的。
如果服务器程序处于监听状态,那么服务器端网络管理软件就向客户机的网络管理软件发出一个积极的响应信号,接收到响应信号后,客户端流套接字初始化代码就给客户程序建立一个端口号,并将这个端口号传递给服务器程序的套接字(服务器程序将使用这个端口号识别传来的信息是否属于客户程序),同时完成流套接字的初始化。
如果服务器程序没有处于监听状态,那么服务器端网络管理软件将给客户端传递一个消极信号,收到这个消极信号后,客户程序的流套接字初始化代码将抛出一个异常对象并且不建立通信连接,也不创建流套接字对象。
这种情形就像打电话一样,当有人的时候通信建立,否则电话讲被挂断。
这部分的工作包括相关联的3个类:
InetAddress、Socket和ServerSocket。
InetAddress对象描绘了32位或128位IP地址,Socket对象代表客户程序流套接字;ServerSocket对象代表服务程序流套接字,这3个类均位于包中。
论文结构介绍
本论文共七章。
第一章是绪论,主要介绍课题的相关内容以及实现该系统所用到的关键技术等。
第二章是系统需求分析,主要从系统的总体概述、功能需求和非功能需求几个方面对系统的需求进行了分析。
第三章是系统概要设计,阐述了系统总体架构是如何设计的。
第四章是系统详细设计,是系统概要设计的一个细化,详细地介绍了每个功能模块的设计思路。
第五章是系统实现,用对关键代码的分析展示了系统是如何逐步实现的。
第六章是系统测试,主要通过基于工作流场景的测试以及基于系统功能的测试来说明系统的可行性和稳定性。
第七章是结束语,是对本次工作的一个总结以及对系统未来的一个展望。
2系统需求分析
2.1系统概述
软件的界面简洁明了而不失精美,操作简单容易,功能按钮名称简单易懂,棋盘的大小,棋子的样式。
2.2功能总体描述
网络五子棋系统应用于局域网,对交互性要求很高,本系统选用了C/S模式进行实现,网络内部使用TCP/IP方式利用Socket提供的服务,使用JavaGraphics类进行用户图形界面的搭建。
系统分成两个部分,分别为服务端程序以及客户端程序[7]。
结合实际情况,将服务器端的程序和客户端的程序放在一起,便以更为方便的建立游戏和参与游戏,有效解决了在局域网中服务器未开启,则无法进行游戏的缺陷。
2.3业务功能分析
五子棋网络游戏主要分为两个部分,游戏服务端和游戏客户端。
游戏的服务端主要存储所有连线客户的相关信息及各种状态,并负责游戏客户之间数据的传递,具有创建服务器、系统设置、连接服务器、我要参赛等等功能;游戏客户端提供客户连接服务器,并能与联网玩家进行游戏。
由于将服务器端和客户端程序放在一起,所以可以减少界面绘制的冗余代码,使得客户端和服务器端使用相同的界面。
所以客服端也具有创建服务器、系统设置、连接服务器、我要参赛等功能。
2.4非功能需求
2.4.1适应性
支持主流windows操作系统
2.4.2安全性
系统通过用户认证确定其为有效用户,如用户名、密码等。
2.4.3可靠性
工作时间内,系统的有效性至少达到95%。
2.4.4可扩充性
系统的扩张性重点关注增加新功能时所需要的工作量的大小。
2.4.5健壮性:
当系统遇到非法输入数据、相关软硬件的缺陷、异常操作性系统能正常运行。
2.4.6易使用性:
系统采用图形化用户操作界面,通过形象的各种图符将系统的各项功能、各种应用程序和文件、输出结果直观、逼真的表示出来,形成一个图文并茂的视窗操作环境。
用户可以轻松地操作和理解输出结果。
2.4.7可维护性:
软件系统中发现并纠正一个故障或进行一次更改的简易错误。
尽量使用前测试,发生错误能顺利维护。
2.4.8可移植性:
都支持主流windows系统。
2.4.9可重用性:
能在所有主流windows系统运行,运行环境要求不严。
2.5接口说明
本系统是建立在操作系统之上的Java应用系统,不需要单独地和操作系统再建立连接,底层由JDK虚拟机和操作系统打交道。
本系统采用MySql作为默认数据库,通过Java系统的JDBC连接和数据库操作,本系统不用再单独与数据库作底层通信。
本系统将采用Struts开源框架。
3系统概要设计
3.1总体设计
3.1.1总体设计原则
总体设计应遵循以下原则:
★整体性:
软件是作为统一整体而存在的。
因此,在总体设计中要从整个软件的角度去考虑。
★灵活性:
为保持软件长久的生命力,要求该软件具有很强的环境适应性。
为此,该软件必须具有较好的开放性与结构的可变性。
★可靠性:
可靠性是指软件抵御外界干扰的能力及受外界干扰时的恢复能力。
★经济性:
经济性是指在满足游戏软件需求的前提下,尽可能地减少对游戏的开销。
3.1.2系统设计框架
系统设计框架如图3.1所示:
图3.1系统设计框架
3.1.3主要功能及流程
系统主要模块:
根据上面的系统的设计要求,可以将此网络五子棋游戏分为以下五个模块:
1)初始化模块:
建立棋盘数组并清零;初始化界面并在屏幕上画出棋盘,加载音乐等。
2)主循环控制模块:
负责控制下棋顺序,当轮到某方下子时,负责将程序流程转到相应的模块中。
3)玩家落子模块:
即用户在指定落子区域单击后,程序就会得到该棋子的坐标,并且将棋盘数组中坐标处记录棋子的颜色,1代表白色,2代表黑色,以说明是哪一方下的棋子。
4)胜负判断模块:
根据预先设定的五子棋规则,判断游戏输赢。
5)网络模块:
网络功能的实现,使两台不同计算机的用户通过网络连接,实现网络对弈的功能。
服务器端作用
服务器端主要通过建立流连接来连接客户端,与客户端进行相互通信、转发信息。
接收客户端的信息,接收信息后按照此客户端的要求将信息发送到相应的客户端,服务器端起到了中转的作用。
玩家进入游戏界面时,如果玩家不想进入别人已经建立好的游戏中,那也可以自己从界面中建立一个自己的游戏,等待其他玩家的进入。
首先输入你要建立游戏的IP地址,输入自己的名字,这样一个自己的游戏就建立了,如果有玩家加入游戏,系统会提示某某玩家进入,这时你可以选择开始游戏或者继续等待。
游戏各模块功能跟客服端的模块相同。
客户端作用
玩家进入游戏界面时,首先提示用户连接服务器,当玩家连接上服务器后,就会在界面右上角给出用户的初始玩家名,在聊天内容框中会给出用户提示,玩家可以创建游戏或者加入建立好的游戏。
游戏各模块功能如下表3.1.3:
表3.1.3-1客户端模块功能
以上功能模块在界面中的展示如下图所示:
图3.1.3-2功能模块的展示
3.1.4系统主流程
玩家进入游戏,选择是否为服务器,是则等待其他玩家加入,否则等待其他玩家建立服务器。
进入服务器后点参赛,进入对弈阶段。
对弈结束,从新开始。
图3.1.4网络五子棋游戏流程图
3.2概要设计
根据玩家的需求分析,本系统的实现主要用到如下几个类:
★sendData:
主要用于玩家相关信息的传递。
★ChessClient:
主要用于玩家信息的初始化。
★MyThread:
主要用于实现连接网络玩家,通过此类玩家发送自己的游戏状态以及接收并进行处理从服务器传递过来的信息。
★PaintComponent:
主要用于绘制棋盘及棋子。
3.2.1网络编程模式的选取
网络编程模式主要分成两类:
一种是基于C/S(客户机/服务器)模式,另一种是B/S(浏览器/服务器)式;C/S程序具有好的交互性,功能强大,但是客户端必须安装客户端软件,限制了其应用;B/S模式下要求客户端具有浏览器,但浏览器在安全方面有一些限制,交互性与功能有一些限制网络五子棋系统应用,所以一般的网络五子棋游戏都选用了C/S模式进行实现,使用TCP/IP方式利用Socket通过传输层提供服务。
在Socket工作中,用ClientSocket类建立客户端连接,用ServerSocket类建立服务器端连接,这两个组件分别用来操纵客户端和服务器端的Socket对象进行连接和传输数据。
在通信过程中,服务器端应用程序先启动,然后等待客户端的连接请求。
在另外一台计算机上启动客户端应用程序,同时输入服务器端Socket地址和端口号进行选择服务器,找到服务器后就向服务器端发请求连接服务器端,允许连接后即向客户端Socket收到Accept信号。
客户端和服务器端就正式建立起了后,就可以分别调用TserveRsocket和TClientSocket的Socket属性和客户端进行数据传输。
客户端和服务器端Socket组件必须设置相同的端口号。
3.3主要类与其作用
3.3.1服务器类
服务器类用于接收客户端的连接,并为每个客户端在服务器端启动唯一的守护线程,线程主要功能是接收客户端发送过来的消息并做出相应的处理。
客户端发送到服务器端的主要消息有两部分:
一部分是客户端发送给服务器端需要服务器端进行处理的,如客户端发送过的连接信息、客户端改名信息、客户端断开连接信息等;另一部分是客户端发送给服务器端需要服务端转发给其他客户端的消息,如客户端给游戏另一方发送的棋盘状态数据、聊天信息等。
服务器类的主要对象如表3.3.1-1:
表3.3.1-1服务器主要对象功能
对象名称
功能
port
双方之间转发数据用于建立数据报套接字的端口号,本次程序中是使用UDP连接
socket
ServerSocket对象,port传递端口号,监听连接请求的端口。
ip
服务器的ip地址,客户机需要使用这个ip地址才能够与服务器进行连接
服务器类使用状况如下图:
图3.3.1-2服务器类用况图
3.3.2客户端类
游戏客户端的主要功能是为了初始化和组织用户界面,并且定义了各个按钮的功能。
游戏客户端的主要对象如下如表3.3.2-1:
表3.3.2-1客户端对象功能
模块名称
功能
jbInit
各种组件的初始化,设置各个组件的位置及内容
actionPerformed
对象发生操作时调用,通过e.getSource()来区哪个按钮发生了点击事件,并启动相应的方法
MyThread
内部线程类,负责接收数据,有“move”方法是对方的走棋信息,“undo”表示对方撤销上步棋,“over”则表示有一方胜利,“quit”表示对方离开
sendData
发送信息给对方
MouseLis
实现mousePressed事件,用于落子。
首先判断点击位置是否在棋盘中,并且无落子,再根据自己的颜色修改对应位置的值
checkWin
判断这个棋子是否和其他的棋子连成5子即输赢判断
游戏客户端使用状况如下图:
图3.3.2-2游戏客户端用况图
3.3.3棋盘类
棋盘类的主要功能是绘制玩家的棋盘状态与棋子信息。
棋盘类的主要对象如表3.3.3-1:
表3.3.3-1棋盘对象功能
对象名称
功能
allChess[][]
双方的落子信息在此二维数组中,其中0表示这个位置没有棋子,1表示这个位置是黑子,2表示这个位置是白子。
isBlack
是否为黑方,true代表为黑方,false代表白方
canPlay
标识游戏是否可以继续
instr
缓冲区域,用于储存双方通信信息,程序可以从其中读取对方发送的消息
os
PrintWriter类型,用于向缓冲区写入数据
棋盘类用况如下图:
图3.3.3-2棋盘类用况图
4详细设计
4.1开发环境的搭建
4.1.1安装JDK
★从官方网站上下载免费安装软件:
网址:
www.//。
★运行下载的exe文件,如图:
4.1.1-1:
图4.1.1-1接受协议图
★点击接受,选择安装路径。
如图4.1.1-2所示:
图4.1.1-2jdk的安装图
4.1.2安装JRE
★从官方网站上下载免费安装软件,点击exe开始安装。
如图4.1.2-1所示:
图4.1.2-1JRE选项图
★点击安装,完成安装JRE。
如图4.1.2-2所示:
图4.1.2-2安装过程图
4.1.3安装Eclipse
从官方网站上下载免费压缩包,在jdk安装目录下,解压此压缩包即可。
如图4.1.3-1:
图4.1.3-1Eclipse安装图
4.1.4配置环境变量
在环境变量的配置中,假设JDK的安装目录为D:
\ProgramFiles\Java\jdk1.6.0_10环境变量PATH
方法一:
在c:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 五子棋 游戏 系统 设计 实现