基于Java的“网络五子棋”游戏的设计和实现(含源文件).doc_第1页
基于Java的“网络五子棋”游戏的设计和实现(含源文件).doc_第2页
基于Java的“网络五子棋”游戏的设计和实现(含源文件).doc_第3页
基于Java的“网络五子棋”游戏的设计和实现(含源文件).doc_第4页
基于Java的“网络五子棋”游戏的设计和实现(含源文件).doc_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

基于Java的“网络五子棋”游戏的设计和实现网络版客户端学生:xxx 指导教师:xx内容摘要:目前,随着计算机网络的发展,以计算机技术和网络技术为核心的现代网络技术已经在现实生活和生产中得到了广泛的使用,休闲类网络游戏集趣味性,娱乐性,互动性和益智性于一体,已经成为多数人群的休闲方式,也为多数人所喜好。 本设计收集了关于JAVA基础的书籍,着重收录了关于SOCKET编程的内容,找到了五子棋概述和规则的资料,查阅了网络通信技术的相关论文,同时也参考了很多关于五子棋实现的程序资料以及关于JAVA开发工具的介绍的文档。在期间,我学习了多线程技术、双缓冲技术、数据传输技术、SOCKET编程技术,研究了网络通信原理、JAVA编写原理等一系列的原理。开发了网络五子棋网络通信代码,实现了网络聊天、数据传输、网络通信、界面组织如:棋盘、建立服务器、连接到服务器、系统设置、我要参赛等功能。通过对以上技术的学习和研究,利用SOCKET编程,能服务器与客户端之间的连接,利用多线程技术完成了服务器端与客户端之间的数据传输、网络通信,使得两个客户端能够同步的进行处理。在加载图片以及绘制棋盘方面,采用双缓冲技术消除屏幕的闪烁现象。达到了预期的效果。 关键词: 多线程 SOCKET 客户端 网络通信Design and realization of the web gobang game based on javaclient moduleAbstract: At present, with the development of computer network, computer technology and network technology as the core of modern network technology has in real life and production has been widely used. Recreational type of network games consists of interesting, entertaining, interactivity and beneficial intelligence. It has become a way of entertainment to many people, and has been loved.Much of the information collected in this design,such as many books based on the JAVA, focus on the contents of SOCKET programming, Find information about the web gobang game, Access to the relevant papers, Reference to a lot of program information on achieving The web gobang game and introduction to JAVA development tools on the document. In the period, I learned a series of principles,For example Multi-threading technology, double-buffering technology, data transmission technology, SOCKET programming technique to study the principle of network communication, JAVA writing principles. Internet chat, data transmission, network communications, interfaces structure, such as: the board, establishing server, connecting server, option had been realized. I know these technologies through studying and researching, I using of SOCKET programming, server and client can be connecting, i using of multi-threading technology to complete the server side and client-side data transmission and the client can synchronize the two processtion. Pictures and drawing board loading, I using of double-buffering to eliminate screen flicker. Keywords: multi-threaded socket client network communication目 录前言11 绪论11.1 背景11.2 选题的前提和目的21.3 五子棋介绍21.4 主要完成内容22 开发环境及工具介绍32.1 开发环境及运行环境32.1.1 开发环境32.1.2 运行环境32.1.2 开发工具32.2 Java 简介32.2.1 Java的起源和发展32.2.2 Java特点42.3 Java Socket 网络编程简介52.3.1 Java Socket 网络编程基础52.4 Java 图形编程73 需求分析和总体设计73.1 需求分析作用73.1.1 基本需求分析73.1.2 高级需求分析73.2 总体设计83.2.1 系统设计思想83.2.2 系统总体设计93.3 功能模块及流程103.3.1 系统主要模块103.3.2 服务器端作用103.3.3 客户端作用113.3.4 系统主流程124 概要设计134.1 网络编程的模式和选取134.2 主要类与其作用134.2.1 服务器类134.2.2 客户端主类154.2.3 客户端副类154.2.4 棋盘类165 详细设计185.1 开发环境的搭建185.1.1 安装JDK185.1.2 安装JRE195.1.3 安装Eclipse205.1.4 配置环境变量205.2 客户端界面设计235.3 客户端网络设计245.4 棋盘类设计255.5 系统各模块之间的关系266 软件测试和展示276.1 软件测试的方法276.2 网络客户端测试用例286.3 游戏界面展示297 总结语32参考文献34基于Java的“网络五子棋”游戏的设计和实现网络版客户端前言 随着经济社会的迅速发展,人们生活水平有了很大的提高,人们的生活观念也发生了巨大的改变。高品质的生活、现代化得生活方式成为人们共同追求的目标;休闲、娱乐性活动作为时尚生活中的一部分,而被大多数的人所追捧。棋类项目作为一种智力型项目,可以益智健心、修身养性,也可以满足人们对于娱乐和休闲的新需求。一些项目比如五子棋等等,由于项目本身互动的特点,一直被人们所喜爱,因此得以生存和发展,成为许多人喜爱的休闲娱乐性棋类项目。 而今,以网络技术为核心和计算机技术的现代网络技术已经在现实生活得到了十分的广泛的使用。休闲类网络游戏集合了益智性、趣味性、互动性、娱乐性于一体,已经成为多数人群的选择的休闲方式。借此,本论文在分析了当前计算机网络的蓬勃发展和人们对于休闲娱乐性生活方式的追求,以java为工具,以精美的界面,以常规安全的socket建立连接,设计更为益智的网络五子棋游戏,增强了趣味性和益智性。1 绪论1.1 背景现在人们压力日益增大,人们需要劳逸结合也获得更高的工作效率,工作之余的娱乐对每一个人来说都是必不可少的放松方式。五子棋游戏简单易学同时具有很大奥妙性,也非常富有趣味性与消遣性。在经过不断发展后,五子棋已经成为棋盘娱乐的重要的组成部分,它能够开发智力、增强思维能力,是人们休闲娱乐的不二的选择。而网络互动娱乐是近几年迅速发展起来的新的娱乐形式,成为IT产业中增长最快的娱乐形式之一。网络五子棋游戏很多是使用Java语言开发的一款游戏。它使用SOCKET建立连接,多线程处理数据,这些特点使这款游戏无论是客户端还是服务器的实现都相对容易。1.2 选题的前提和目的随着计算机网络技术的不断发展,网络游戏已经成为最具潜力的热点领域。各种各样的游戏使人眼花缭乱,而特别是其中一些休闲益智类的棋牌游戏,集娱乐性、趣味性、益智性和互动性于一体,拥有很大的用户。棋类游戏能锻炼人的思维,起到修身养性的作用。五子棋游戏可以分为两类:一类是单机版五子棋游戏,另一类是网络五子棋游戏。随着计算机网络和JAVA技术的不断发展,使用Java开发网络五子棋游戏将是一个实用性很强的毕业设计项目。网络五子棋游戏的总体功能是要设计出具有精美界面的,具备人工智能的,支持网络对弈的五子棋游戏。本系统最终的目的是建立一个有具体规则的网络五子棋平台,使两台不同计算机的使用者通过网络连接,达到网络对弈的目的。1.3 五子棋介绍五子棋起源于中国古代的传统黑白棋种之一,是一种两人对弈的纯策略型棋类游戏。现代五子棋日本称之为“连珠”,英译为Renju,英文为“FIR”(Five in a Row 的缩写)或“Gobang”,中文有“串珠”、 “五子连”、“连五子”等很多种名字。它发展于日本,流行于欧美。容易上手,老少皆宜,而且引人入胜;不仅能提高智力,而且富含哲理。传统五子棋的棋具与围棋类似,棋子分为黑白两色,棋盘有大有小,棋子放置于棋盘线交叉点上。两人对局,各选一色,轮流落子。五子棋游戏规则:游戏双方轮流在棋盘下棋子,一方的棋子在横、竖、两个对角线上首先到达五子者为胜方。因为五子棋在落子后不能移动或拿掉,所以也可以用纸和笔来进行游戏。随着五子棋的发展,逐步发现先行优势非常大,最后总结出“先行必胜”的结论。五子棋成为竞技运动,核心问题是怎样解决传统五子棋下法中“先行必胜”的问题。而竞技五子棋便是参赛双方打破“先行必胜”的问题,以棋盘和棋子为介体,进行智力性对抗的竞技体育项目。1.4 主要完成内容本课题为了分析了五子棋规则及技巧,以及研究客户端界面的布局,决定用Java开发五子棋游戏。主要完成客户端界面设计和网络对战2个功能模块。客户端负责收集用户的信息和界面维护,以及错误处理;服务器的建立以及对战用户的基本信息和两个对战用户的棋盘信息,判断输赢。2 开发环境及工具介绍2.1 开发环境及运行环境2.1.1 开发环境 AMD Athlon(tm) 2.10GHz,2G内存,80G硬盘 Microsoft Windows 7 JDK 1.60 Eclipse2.1.2 运行环境 Intel Pentium core及以上处理器,128M以上内存,20G以上硬盘 Microsoft Windows 9X/NT操作系统 1024*768或以上的屏幕分辨率2.1.2 开发工具Java的开发工具很多,比如JBuilder、Eclipse、NetBeans IDE、JCreator 等等,不同的工具可能对开发不同的程序有针对的优势。我选择Eclipse进行编写,我们说一下Eclipse的优势。 Eclipse是一种具有可扩展的开放源代码IDE。Eclipse可以在同一IDE中集成了来自不同供应商的工具,并实现了工具之间的相互操作,从而显著简化了项目工作流程。 Eclipse框架的灵活性来自于它的扩展点。在XML中定义的已知接口,并充当插件的耦合点。扩展点的范围包括从简单字符串,到一个Java类的描述。 Eclipse的最大特点是它能接受由Java开发者自己编写的开放源代码插件。2.2 Java 简介Java是一种简单的、分布式的、面向对象的、可移植、解释的、安全的的多线程语言。它以其平台无关性、硬件结构无关性、强安全性、面向对象、语言简洁的特点,在网络编程语言中占据了无可比拟的优势,成为实现电子商务系统的首选语言2。2.2.1 Java的起源和发展Java是Sun公司在1995年推出的新兴的编程语言,它是一种跨平台的、应用于当前高速发展的网络的编程语言。在编程语言中,可认为Basic语言促使了C语言的出现,C语言促进了C+的出现,而C+又促使了Java语言的出现。自从Java正式推出后,以它特有的优势迅速发展,经过几年的发展,Java已经在软件开发等领域占有很大的市场。Java分为三种:J2SE、J2EE和J2ME。J2SE是Java平台标准版3,主要应用于桌面程序和Java小应用程序开发;J2EE主要用于企业级开发和大型网站的开发;J2ME主要用于手机等移动设备程序的开发。2.2.2 Java特点 平台无关性Java的平台无关性能让这种软件在每个平台上都能正常地运行,就是只要写一次程序,在任何地方、任何时间该程序永远都能够运行。Java解释器生成与体系无关的字节码指令,这些指令对应于Java虚拟机里表示,Java解释器得到字节码后,对它进行转换,只要安装Java运行系统,Java就可以在任何处理器上运行。 简单性Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,开发者只要知道一些概念就能够编写一些应用程序。 多线程设计Java的多线程,是为了满足人们对创建交互式网上程序的需要。用Java编写出来的应用程序可以同时执行很多任务。多线程机制使应用程序可以并行执行,而且同步机制保证了对共享数据的正确操作。 健壮性Java语言被病毒感染和破坏得最少。Java丢弃了难学和危险的指针功能,而大部分病毒程序常用的方法就是通过巧妙地运用地址变量如指针来获取计算机的资源,从而使程序不安全。 面向对象语言Java的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。对象中封装它的状态变量和相应的方法,实现了模块化和信息的隐藏;而类则是提供对象的原型,并且通过继承的机制,子类可以使用父类所提供的方法,以实现代码的复用。 自动内存管理也可以说自动内存管理是Java健壮性的体现,内存管理是很多种应用程序内的很关键因素。在网络上的其他地方读取大量的数据,之后把该数据写入硬盘上的数据库内,一般的设计就是把数据读入内存中的某些集合内,对这些数据执行某些操作,之后把数据写入数据库。在数据写入数据库后,在下一批处理之前,临时存储数据的集合必须清空旧数据,或被删除后再建。这种操作可能执行很多次,很多语言要手工清空或删除集合数据结构。Java的自动内存管理4正好解决这一点,它使程序员不用再为内存管理写大量的代码。2.3 Java Socket 网络编程简介2.3.1 Java Socket 网络编程基础网络编程,简单的理解就是两台计算机相互通信。其基本模型就是客户机/服务器模型,也就是通信双方中的一方必须提供一个固定的端口,而另一方则只需要知道这个端口,并去建立两者之间的联系,然后完成数据交换。这里提供固定位置的一方通常称为服务器,而建立联系的一方通常称为客户端5。基于客户机/服务器的Socket通信模型如下图所示:接收服务结果向服务器发出服务请求向服务器发送连接请求将处理结果反馈给客户端解释并处理请求信息接收用户请求信息阻塞,等待建立连接在Socket上监听客户端请求在制定服务器端公认的地址和端口服务器端创建Socket对象创建Socket对象客户端建立连接请求信息反馈信息图2.3.1-1 基于客户机/服务器的Socket通信模型图Java为这个模型的实现提供了简化的Socket编程接口。在程序中只要导入java.io包就可以方便的使用java的Socket编程接口。Java中Socket通信模型如下图所示:ServerSocket ss(port #)ss.accept()/等待连接ServerOutputStreamInputStreamss.close()OutputStreamInputStreams.close()Socket s(host,port #)/请求连接服务器Client图2.3.1-2 Java中的Socket编程模型图2.3.2 Socket编程的实现Socket类表示了系统的IP地址和端口号的结合,可以理解为客户端或者服务器端的一个特殊对象。它包含两个处理流的方法,一个是getInputStream(),另一个是getOutputStream(),分别用来获得网络的输入流和输出流。构造Socket对象的代码如下:Socket s = new Socket(IP, port); IP,port分别为服务器端的IP地址和服务器端的端口号。ServerSocket类是一个专门建立Socket服务器的类,它可以用服务器需要使用的端口号作为参数来创建ServerSocket对象。示例代码如下:ServerSocket ss = new ServerSocket(TCP_PORT);当一个客户端程序建立一个Socket连接,所连接的端口号为对应TCP_PORT时,服务器对象ss便响应这个连接,在用上述ss对象调用accept()创建一个代表服务器的Socket对象。创建后服务器便可以利用这个Socket对象与客户端进行数据交换。示例代码如下:Socket clientSocket = ss.accept();在本系统的实现过程中,在支持网络对弈的服务器类的定义中需要使用ServerSocket类来响应多个客户端的连接请求。能够同时建立多个服务器,玩家可以选择不同的服务器参与游戏。2.4 Java 图形编程Java中的Graphics类是一个工具类,用来绘图和显示格式化文本,Graphics类是在java.awt包中声明的。在Java程序中绘图必须在一个窗口或者是一个容器中进行,绘图窗体经常被设计为一个组件容器。显示格式化文本和绘图是调用Graphics类的drawXX()方法完成的,例如drawString(String)等等。绘图采用的坐标系6是原点在左上角,纵轴向下以像素为单位的坐标系。3 需求分析和总体设计3.1 需求分析作用软件需求分析是软件开发周期的第一个阶段,也是关系到软件开发成败的最关键一步。只有通过了软件需求分析,才能把软件的功能和性能由总体的概念性和理论性描述转化为具体的规格说明,从而建立软件开发的基础。实践证明,需求分析工作进行得准确程度,在很大程度上决定了软件开发的成败。软件需求分析的任务就是让用户与开发者明确开发的是一个什么软件。具体的说,就是通过对问题及其环境的理解、分析与综合把握,建立逻辑模型,完成软件的逻辑方案设计。3.1.1 基本需求分析软件的界面简洁明了而不失精美,操作简单容易,功能按钮名称简单易懂,棋盘的大小,棋子的样式。3.1.2 高级需求分析现有的网络编程模式主要分成两类:一种是基于C/S(Client/Server)模式,另一种是B/S (Browser/Server)模式。网络五子棋系统应用于局域网,对交互性要求很高,本系统选用了C/S 模式进行实现,网络内部使用TCP/IP 方式利用Socket提供的服务,使用Java Graphics类进行用户图形界面的搭建。系统分成两个部分,分别为服务端程序以及客户端程序7。结合实际情况,将服务器端的程序和客户端的程序放在一起,便可以更为方便的建立游戏和参与游戏,有效解决了在局域网中服务器未开启,则无法进行游戏的缺陷。五子棋网络游戏主要分为两个部分,游戏服务端和游戏客户端。游戏服务端主要存储所有连线客户的相关信息及各种状态,并负责游戏客户之间数据的传递,具有创建服务器、系统设置、连接服务器、我要参赛等等功能;游戏客户端提供客户连接服务器,并能与联网玩家进行游戏。由于将服务器端和客户端程序放在一起,所以可以减少界面绘制的冗余代码,使得客户端和服务器端使用相同的界面。故客服端也具有创建服务器、系统设置、连接服务器、我要参赛等功能。3.2 总体设计总体设计是软件开发过程中的另一个重要阶段,在这一阶段中将根据需求分析中提出的逻辑模型,合理地完成物理模型的设计。这个阶段的主要目标是将反映了用户信息需求的逻辑方案转换成物理方案,并为下一阶段提供必须的技术资料。总体设计应遵循以下原则: 整体性:软件是作为统一整体而存在的。因此,在总体设计中要从整个软件的角度去考虑。 灵活性:为保持软件长久的生命力,要求该软件具有很强的环境适应性。为此,该软件必须具有较好的开放性与结构的可变性。 可靠性:可靠性是指软件抵御外界干扰的能力及受外界干扰时的恢复能力。 经济性:经济性是指在满足游戏软件需求的前提下,尽可能地减少对游戏的开销。3.2.1 系统设计思想通过服务器的连接,不同的玩家可以连接到各自想参加比赛的服务器地址,并开始各自的游戏。通过安全的SOCKET连接交换数据。通过多线程,使得每个对战的双方不会受到第三方数据的干扰。本系统的功能能够实现一个在网络上供客户进行对战的五子棋网络游戏,因为是C/S 模式的网络游戏,客户只要连接到服务器上,就能选择任何其它用户已创建好的游戏进行对战游戏。在C/S模式游戏中,Server一般提供所有用户的全部信息,并能提供客户之间的信息转发。客户之间的通讯必须通过Server进行,因为多个客户能够连接到同一台Server上,所以Server必须用Thread 负责每个用户的通讯和消息处理。客户连接成功,Server利用特定的客户Thread连接不断从客户读取数据,实现客户和服务器或者客户与客户之间的信息的交互。客户端同样采用的是线程控制的思想,在每一个客户端连接上服务器后,就为此客户端启动一个网络收发数据线程。系统设计设计框架如下图所示:WZQ_ClientWZQ_ServerWZQ_ClientWZQ_ClientWZQ_Client服务客户用户通过TCP与服务器建立连接,通过SOCKET与服务器交互数据图3.2.1-1 网络五子棋设计框架图3.2.2 系统总体设计系统使用Socket 技术以及java 多线程机制进行客户与服务端之间信息的交互,但一个真正实用程序必须针对具体应用定制一套协议用于用户程序之间进行交互,而该协议的定制往往是编写程序的关键也是核心内容,该协议的完善决定程序是否能够正常运行。所谓协议就8是程序之间交互的信息的格式规定, 服务端和客户端都遵循该协议才能够进行对话, 通俗讲是人类之间的语言。本网络游戏可以分为两个部分:服务器和客户端。服务器主要存储所有连线客户的相关信息及各种状态,并负责游戏客户之间数据的传递,具有创建服务器、系统设置、连接服务器、我要参赛等等功能;客户端提供客户连接服务器,并能与联网玩家进行游戏。信息交换如图所示: 客户端发送连接状态信息和聊天信息 客户端服务器服务器端转发其他客户端信息图3.2.2-1 客户端与服务器端的信息交换图3.3 功能模块及流程3.3.1 系统主要模块根据上面的系统的设计要求,可以将此网络五子棋游戏分为以下五个模块:初始化模块:建立棋盘数组并清零;初始化界面并在屏幕上画出棋盘,加载音乐等。主循环控制模块:负责控制下棋顺序,当轮到某方下子时,负责将程序流程转到相应的模块中。玩家落子模块:即用户在指定落子区域单击后,程序就会得到该棋子的坐标,并且将棋盘数组中坐标处记录棋子的颜色,1代表白色,2代表黑色,以说明是哪一方下的棋子。胜负判断模块:根据预先设定的五子棋规则,判断游戏输赢。网络模块9:网络功能的实现,使两台不同计算机的用户通过网络连接,实现网络对弈的功能。3.3.2 服务器端作用服务器端10主要通过建立流连接来连接客户端,与客户端进行相互通信、转发信息。接收客户端的信息,接收信息后按照此客户端的要求将信息发送到相应的客户端,服务器端起到了中转的作用。玩家进入游戏界面时,如果玩家不想进入别人已经建立好的游戏中,那也可以自己从界面中建立一个自己的游戏,等待其他玩家的进入。首先输入你要建立游戏的IP地址,输入自己的名字,这样一个自己的游戏就建立了,如果有玩家加入游戏,系统会提示某某玩家进入,这时你可以选择开始游戏或者继续等待。游戏各模块功能跟客服端的模块相同。3.3.3 客户端作用玩家进入游戏界面时,首先提示用户连接服务器,当玩家连接上服务器后,就会在界面右上角给出用户的初始玩家名,在聊天内容框中会给出用户提示,玩家可以创建游戏或者加入建立好的游戏。游戏各模块功能如下表3.3.3-1:表3.3.3-1 客户端模块功能模块名称功能UserPad用于显示服务器发送过来的当前连接上服务器的用户,即活动玩家的玩家名称。chatPad用于显示服务器发送过来的提示信息以及用户公聊或私聊的内容。chessPad用于绘制棋盘及棋子,以及当前的提示信息。inputPad用于用户选择要公聊或私聊的对象,即所有人或某一具体的玩家,输入要发送的消息,发送给服务器,通过服务器转发出去。controlPad用于对当前的游戏界面进行实时的控制,包括:创建服务器、系统设置、连接服务器、我要参赛等。 以上功能模块在界面中的展示如下图所示:inputpadusrpadcontrolpadChatpadchesspad图3.3.3-1 用户操作界面3.3.4 系统主流程玩家进入游戏,选择是否为服务器,是则等待其他玩家加入,否则等待其他玩家建立服务器。进入服务器后点参赛,进入对弈阶段。对弈结束,从新开始。系统主流程如下图:开始是否建立服务器等待是否有服务器是否有玩家加入判断胜负否从新开始是游戏结束是是否一方退出一方胜利一方胜利图3.3.4-1 网络五子棋游戏流程图4 概要设计根据玩家的需求分析,本系统的实现主要用到如下几个类: ChessServer:主要用于玩家相关信息的传递。 ChessClient:主要用于玩家信息的初始化。 NetClient:主要用于实现连接网络玩家,通过此类玩家发送自己的游戏状态以及接收并进行处理从服务器传递过来的信息。 ChessPad:主要用于绘制棋盘及棋子。4.1 网络编程的模式和选取网络编程模式主要分成两类: 一种是基于C/S(客户机/服务器)模式, 另一种是B/S(浏览器/服务器)式;C/S 程序具有好的交互性, 功能强大, 但是客户端必须安装客户端软件, 限制了其应用; B/S 模式下要求客户端具有浏览器, 但浏览器在安全方面有一些限制, 交互性与功能有一些限制网络五子棋系统应用,所以一般的网络五子棋游戏都选用了C/S 模式进行实现,使用TCP/IP 方式利用Socket 通过传输层提供服务。在Socket工作中,用ClientSocket类建立客户端连接,用ServerSocket类建立服务器端连接,这两个组件分别用来操纵客户端和服务器端的Socket对象进行连接和传输数据。在通信过程中,服务器端应用程序先启动,然后等待客户端的连接请求。在另外一台计算机上启动客户端应用程序,同时输入服务器端Socket地址和端口号进行选择服务器,找到服务器后就向服务器端发请求连接服务器端,允许连接后即向客户端Socket收到Accept信号。客户端和服务器端就正式建立起了后, 就可以分别调用Tserve Rsocket和TClientSocket的Socket属性和客户端进行数据传输。客户端和服务器端Socket组件必须设置相同的端口号。4.2 主要类与其作用4.2.1 服务器类服务器类用于接收客户端的连接,并为每个客户端在服务器端启动唯一的守护线程,线程主要功能是接收客户端发送过来的消息并做出相应的处理。客户端发送到服务器端的主要消息有两部分:一部分是客户端发送给服务器端需要服务器端进行处理的,如客户端发送过的连接信息、客户端改名信息、客户端断开连接信息等;另一部分是客户端发送给服务器端需要服务端转发给其他客户端的消息,如客户端给游戏另一方发送的棋盘状态数据、聊天信息等。服务器类的主要对象如表4.2.1-1:表4.2.1-1 服务器主要对象功能对象名称功能TCP_PORT:服务器端用于建立套接字的端口号,为了可靠的用户连接,因此在服务器端定义了此端口号为TCP的,主要用于建立服务器端与客户端的TCP连接。UDP_PORT:服务器端用于向客户端转发数据需要绑定的用户数据报套接字的端口号,玩家发送给服务器需要转发的消息时,服务器端的DatagramSocket 就是使用此端口号建立的UDP连接。ClientDataHash:用于保存客户端套接字和IP 套接字地址的哈希表,服务器可以通过发送消息的客户端Socket得到其IP套接字地址,将消息转发出去。ClientNameHash:用于保存客户端套接字和客户端当前名字的哈希表,同样是为了转发客户端消息的。ChessPeerHash:用于保存每一对开局玩家信息的哈希表,表中键是服务方,值是客户方,每一对玩家需要交换的如棋盘状态数据,倒计时信息大都依赖于此哈希表来实现。服务器类使用状况如下图:接受玩家处理消息显示状态转发消息服务器端图4.2.1-1 服务器类用况图4.2.2 客户端主类游戏客户端的主要功能是为了初始化和组织用户界面,并且定义了各个按钮的功能。游戏客户端的主要对象如下如表4.2.2-1:表4.2.2-1 客户端对象功能对象名称功能isGameConnected用于判定玩家是否与服务器连接。isChess用于判定玩家是否已经在开局游戏中。isServer用于判定在此局开局游戏中,当前玩家是不是服务方,即主方。isClient用于判定在此局开局游戏中,当前玩家是不是客户方,即次方。ShiCi该类的对象,用于在玩家启动时动态地显示五子棋诗的信息。Sing类该的对象,用于为客户端启动音乐功能。游戏客户端使用状况如下图:界面组织游戏控制信息交换玩家输入游戏玩家图4.2.2-1 游戏客户端用况图4.2.3 客户端副类客户端副类的主要功能是当前玩家与其他玩家进行对弈时,网络客户端处理需要发送和接收的消息。客户端副类的主要对象如表4.2.3-1:表4.2.3-1 网络端对象功能对象名称功能r随机函数类的对象,用于为每个客户端启动时,为每一个客户端随机分配一个端口号,玩家使用此端口号来接收信息。time当前玩家方的时间信息。初始化时间为3分钟。otherTime当前开局游戏中对方的时间信息。初始时间为3分钟。客户端副类类用况图如下:网络对战玩家发送消息聊天消息更名消息建立游戏消息连接消息加入消息退出消息处理消息退出消息玩家退出棋盘状态玩家列表倒计时图4.2.3-1 客户端副类用况图4.2.4 棋盘类棋盘类的主要功能是绘制玩家的棋盘状态与棋子信息。棋盘类的主要对象如表4.2.4-1:表4.2.4-1 棋盘对象功能对象名称功能board玩家所维护的棋盘二维数组。结果为1表示(x,y)位置为黑子,结果为2表示(x,y)位置为白子。withComputer玩家与电脑对弈的标志。如果当前玩家是与电脑对弈,此变量值为真;否则为假。isMouseEnable以此变量来控制在网络对弈的双方中,当前玩家是否处于可以落子状态。因为网络对弈要求当一玩家下完后,对方才能落子,因此当此变量为真时,玩家可以落子;当此变量为假时,玩家不可以落子。isRegretEnable判断当前的悔棋按钮是否可用。为真时,玩家可以悔棋;为假时,玩家不可以悔棋。isFull判断当前的棋盘是否已经下满,当棋盘下满后,分别给游戏双方一个提示,然后进行清盘操作。棋盘类用况如下图:先手判断落 子绘制棋盘胜负判断玩家图4.2.4-1 棋盘类用况图5 详细设计5.1 开发环境的搭建5.1.1 安装JDK 从官方网站上下载免费安装软件:网址:www./ 。 运行下载的exe文件,如图:5.1.1-1:图5.1.1-1 接受协议图 点击接受,选择安装路径。如图5.1.1-2所示:图5.1.1-2 选择路径图 点击下一步完成安装。如图5.1.1-3所示:图5.1.1-3 jdk的安装图5.1.2 安装JRE 从官方网站上下载免费安装软件,点击exe开始安装。如图5.1.2-1所示:图5.1.2-1 JRE选项图 点击安装,完成安装JRE。如图5.1.2-2所示:图5.1.2-2 安装过程图5.1.3 安装Eclipse从官方网站上下载免费压缩包,在jdk安装目录下,解压此压缩包即可。如图5.1.3-1:图5.1.3-1 Eclipse安装图5.1.4 配置环境变量在环境变量的配置中,假设JDK的安装目录为D:Program FilesJavajdk1.6.0_10环境变量PATH方法一:在c:Autoexe.bat文件的底部或者最后以后一个path命令之后,输入:SET PATH=%PATH%;D:Program FilesJavajdk1.6.0_10bin方法二:在“系统属性”对话框中 直接设置环境变量:PATH=;D:Program FilesJavajdk1.6.0_10bin;具体操作如下: 在我的电脑上点击右键,找到属性。如下5.1.4-1图:图5.1.4-1 电脑属性图 找到系统属型里的环境变量,并找到path变量。如5.1.4-2图所示:图5.1.4-2 path变量图 在找到的path变量中加入JDK的安装路径。如图5.1.4-3所示:图5.1.4-3 环境变量配置图环境变量CLASSPATH方法一:在c:Autoexe.bat文件的底部或者最后以后一个CLASSPATH命令之后,输入:SET CLASSPATH=%CLASSPATH%;.上面文字的“.”指示javac命令在其所在的当前目录中寻找被编译文件按所需要的用户(非系统)类文件;“SET CLASSPATH=”表示关闭环境变量CLASSPATH。方法二:在“系统属性”对话框中 直接设置环境变量具体操作如下。 找到系统变量里的classpath变量,如果没有,则新建一个classpath变量。找到后如下图:图5.1.4-4 变量classpath图 环境变量classpath中加入安装路径,如下图:图5.1.4-5 环境变量配置图最后点击确定,完成环境变量的配置。5.2 客户端界面设计游戏客户端主要用于玩家信息的初始化,玩家的操作状态的定义,包括结构组织游戏客户端的界面,实现定义游戏控制按钮,完成定义键盘的事件。主要方法: launchFrame()方法 用在启动玩家客户端时,为用户发送连接服务器信息,并且加载背景音乐等。 actionPerformed(ActionEvent e)方法 用于客户端玩家单击控制按钮的功能的实现。该方法主要用来实现玩家修改名字、创建游戏、我要参赛、系统设置等各个按钮的功能。 keyPressed(KeyEvent e)方法 用于实现聊天功能,当玩家输入聊天信息到输入框中后,按回车键可以发送消息。此事件中主要处理了两个行为,一是当玩家选择某玩家进行私聊时的处理,二是当用户选择所有人进行公聊时的处理。 客户端类如图5.2-1:图5.2-1 游戏客户端类类图5.3 客户端网络设计网络客户端主要用于接收和发送服务器消息。主要方法如下: connect(String,int)用于服务器的连接。第一个参数是要连接的服务器的IP地址,第二个参数是连该服务器的端口号。玩家用此方法连接上服务器,玩家启动一个线程用来接收服务器发送过来的消息。 restart() 用于游戏重新开始,在此方法中要求将重新初始化信息,并且进行棋盘清理操作。 send(int,String)用于发送此玩家的消息状态给服务器。第一个参数是消息类型,第二个参数是消息内容。消息类型有如下几种如表5.3-1: 表5.3-1 消息类型类型发送消息类型0代表修改客户端名字1代表客户端建立游戏2代表客户端加入游戏3代表向游戏对方通告客户端已加入4代表客户端放弃游戏5代表客户端对游戏对方发送过来的放弃操作进行断开6代表游戏一方向另一方发送棋盘状态7代表游戏一方向另一方发送时间信息 doMessage(DatagramPacket)用于接收从服务器端发送过来的消息。5.4 棋盘类设计棋盘类主要用于绘制棋盘的。 paint(Graphics) 方法用来绘制棋盘、棋盘的背景图片和棋子位置。因为采用了双缓冲技术,有效的消除加载图片时的窗口闪烁。 clearBoard()方法用于初始棋盘和一些变量的操作。 select()方法设置其按钮状态的。 isFull()方法用于判断当前棋盘是否已无法落子。如果当前棋盘已满,则通知玩家此局游戏流局。 judge(int,int,int) 方法用于判断当前棋子落下时是否游戏胜负已分。如果游戏获胜,则方法返回真值;否则返回假值。棋盘类图如下所示:图5.4-1 棋盘类类图5.5 系统各模块之间的关系ChessServer类,ChessClient类,NetClient类,ChessPad类等类之间的交互实现了系统的主要功能。服务器端模块的实现,主要的类是ChessPad类和ChessClient类。ChessClient类实现了玩家单击按钮功能及界面的组织;ChessPad类用于绘制棋盘和玩家的落子位置。客户端主要用到的是这三个类:ChessServer类、ChessClient类和NetClient类。服务器类和客户端类用Socket编程实现的信息交换。其他功能都是在用户连接服务器后由游戏客户端类自动调用其类来实现的。各模块关系如下图所示:图5.5-1 各模块关系图6 软件测试和展示6.1 软件测试的方法软件测试11就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品符合需求。软件测试的目的: 测试并不仅仅是为了找出错误。通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便改进。 这种分析能帮助测试人员设计出有针对性的测试方法,改善测试的效率。 没有发现错误的测试也是有价值的。完整的测试是评定软件质量的重要方法。软件测试的方法:软件测试可以分为黑盒测试和白盒测试。黑盒测试就是测试要在软件的接口处进行。这种方法是把测试内容看做一个盒子,程序内部的逻辑结构和内部特性不被测试人员考虑,只依据程序的需求规格说明书来检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下4种错误: 是否有不正确或遗漏的功能。 在接口上,输入是否能正确的接受。能否输出正确的结果。 是否有数据结构错误或外部信息访问错误。 是否有初始化和终止性的错误。白

温馨提示

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

评论

0/150

提交评论