基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.doc

上传人:可****阿 文档编号:91623481 上传时间:2023-05-27 格式:DOC 页数:29 大小:914.50KB
返回 下载 相关 举报
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.doc_第1页
第1页 / 共29页
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.doc_第2页
第2页 / 共29页
点击查看更多>>
资源描述

《基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.doc》由会员分享,可在线阅读,更多相关《基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.doc(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、摘 要目前,随着计算机网络的发展,以计算机技术和网络技术为核心的现代网络技术已经在现实生活和生产中得到了广泛的使用,休闲类网络游戏集趣味性,娱乐性,互动性和益智性于一体,已经成为多数人群的休闲方式,也为多数人所喜好。 本设计收集了关于JAVA基础的书籍,着重收录了关于SOCKET编程的内容,找到了五子棋概述和规则的资料,查阅了网络通信技术的相关论文,同时也参考了很多关于五子棋实现的程序资料以及关于JAVA开发工具的介绍的文档。在期间,作者学习了多线程技术、数据传输技术、SOCKET编程技术,研究了网络通信原理、JAVA编写原理等一系列的原理。开发了五子棋网络对战的代码,实现了网络聊天、联机对战

2、、网络通信、界面组织如:棋盘、建立服务器、连接到服务器等功能。通过对以上技术的学习和研究,利用SOCKET编程,能服务器与客户端之间的连接,利用多线程技术完成了服务器端与客户端之间的数据传输、网络通信,使得两个客户端能够同步的进行处理。 关键词: JAVA 多线程 SOCKET 五子棋AbstractAt present , with the development of computer networks , computer and network technology as the core of modern network technology has been widely use

3、d in real life and production, the casual game set interesting , entertaining, interactive and puzzle in one, has become the majority population of leisure, but also for the majority of people have preferences. The design of the collection of books on the JAVA -based , focusing on the collection of

4、content SOCKET programming , found the data overview and backgammon rules , access to the network communication technology related papers also refer to a lot of information on backgammon program implementation as well as on document describes the JAVA development tools . In the meantime, I learned t

5、he multi-threading technology, data transmission technology , SOCKET programming technique to study the principle of network communication , JAVA write a series of principles such as the principle . Developed backgammon online play code implements online chat , online gaming, network communications,

6、 interface organizations such as : the board , establish a server , connect to the server and other functions. Through the above technical study and research , the use SOCKET programming, connections between the server and client can use multi-threading technology to complete the data transfer betwe

7、en the client and the server , and network communication , so that both the client can synchronize for processing.Keywords: JAVA multithreading SOCKET Gobang目录1 绪论11.1 背景及意义11.2 选题的目的11.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 J

8、ava特点42.3 Java Socket 网络编程简介52.3.1 Java Socket 网络编程基础52.3.2 Socket编程的实现62.4 Java 图形编程72.5多线程机制73 需求分析和总体设计93.1 需求分析作用93.1.1 界面需求分析93.1.2 软件需求分析93.2 总体设计93.2.1 系统设计思想103.2.2 系统总体设计103.3 功能模块及流程113.3.1 系统主要模块113.3.2服务器端作用123.3.3客户端作用134 详细设计及实现154.1 系统主流程154.2 如何判断输赢164.3 开发环境的搭建194.4 功能模块的界面实现205 软件的

9、测试235.1 软件测试的方法236 总结语25参考文献26 1 绪论1.1 背景及意义1背景随着经济社会的迅速发展,人们生活水平有了很大的提高,人们的生活观念也发生了巨大的改变。高品质的生活、现代化得生活方式成为人们共同追求的目标;休闲、娱乐性活动作为时尚生活中的一部分,而被大多数的人所追捧。棋类项目作为一种智力型项目,可以益智健心、修身养性,也可以满足人们对于娱乐和休闲的新需求。一些项目比如五子棋等等,由于项目本身互动的特点,一直被人们所喜爱,因此得以生存和发展,成为许多人喜爱的休闲娱乐性棋类项目。 而今,以网络技术为核心和计算机技术的现代网络技术已经在现实生活得到了十分的广泛的使用。休闲

10、类网络游戏集合了益智性、趣味性、互动性、娱乐性于一体,已经成为多数人群的选择的休闲方式。借此,本论文在分析了当前计算机网络的蓬勃发展和人们对于休闲娱乐性生活方式的追求,以java语言为工具,在MyEclipse的环境那下,以精美的界面,以常规安全的socket建立连接,设计更为益智的网络版五子棋游戏,增强了趣味性和益智性。2意义现在人们压力日益增大,人们需要劳逸结合也获得更高的工作效率,工作之余的娱乐对每一个人来说都是必不可少的放松方式。五子棋游戏简单易学同时具有很大奥妙性,也非常富有趣味性与消遣性。在经过不断发展后,五子棋已经成为棋盘娱乐的重要的组成部分,它能够开发智力、增强思维能力,而且富

11、含哲理,有助于修身养性。是人们休闲娱乐的不二的选择。而网络互动娱乐是近几年迅速发展起来的新的娱乐形式,成为IT产业中增长最快的娱乐形式之一。网络五子棋游戏很多是使用Java语言开发的一款游戏。它使用SOCKET建立连接,多线程处理数据,这些特点使这款游戏无论是客户端还是服务器的实现都相对容易。1.2 选题的目的随着计算机网络技术的不断发展,网络游戏已经成为最具潜力的热点领域。各种各样的游戏使人眼花缭乱,而特别是其中一些休闲益智类的棋牌游戏,集娱乐性、趣味性、益智性和互动性于一体,拥有很大的用户。棋类游戏能锻炼人的思维,起到修身养性的作用。五子棋游戏可以分为两类:一类是单机版五子棋游戏,另一类是

12、网络五子棋游戏。随着计算机网络和JAVA技术的不断发展,使用Java开发网络五子棋游戏将是一个实用性很强的毕业设计项目。网络五子棋游戏的总体功能是要设计出具有精美界面的,具备人工智能的,支持网络对弈的五子棋游戏。本系统最终的目的是建立一个有具体规则的网络五子棋平台,达到网络对弈的目的。1.3 五子棋介绍五子棋起源于中国古代的传统黑白棋种之一,是一种两人对弈的纯策略型棋类游戏。现代五子棋日本称之为“连珠”,英译为Renju,英文为“FIR”(Five in a Row 的缩写)或“Gobang”,中文有“串珠”、 “五子连”、“连五子”等很多种名字。它发展于日本,流行于欧美。容易上手,老少皆宜,

13、而且引人入胜;不仅能提高智力,而且富含哲理。传统五子棋的棋具与围棋类似,棋子分为黑白两色,棋盘有大有小,棋子放置于棋盘线交叉点上。两人对局,各选一色,轮流落子。五子棋游戏规则:游戏双方轮流在棋盘下棋子,一方的棋子在横、竖、两个对角线上首先到达五子者为胜方。因为五子棋在落子后不能移动或拿掉,所以也可以用纸和笔来进行游戏。随着五子棋的发展,逐步发现先行优势非常大,最后总结出“先行必胜”的结论。五子棋成为竞技运动,核心问题是怎样解决传统五子棋下法中“先行必胜”的问题。而竞技五子棋便是参赛双方打破“先行必胜”的问题,以棋盘和棋子为介体,进行智力性对抗的竞技体育项目。1.4 主要完成内容本课题为了分析了

14、五子棋规则及技巧,以及研究客户端界面的布局,决定用Java开发五子棋游戏。主要完成客户端界面设计和网络对战2个功能模块。客户端负责收集用户的信息和界面维护,以及错误处理;服务器的建立以及对战用户的基本信息和两个对战用户的棋盘信息,判断输赢。2 开发环境及工具介绍2.1 开发环境及运行环境2.1.1 开发环境 Microsoft Windows XP或以上版本 JDK 1.60 MyEclipse8.52.1.2 运行环境 Microsoft Windows XP或以上版本 操作系统 1024*768或以上的屏幕分辨率2.1.2 开发工具Java的开发工具很多,比如JBuilder、MyEcli

15、pse、NetBeans IDE、JCreator 等等,不同的工具可能对开发不同的程序有针对的优势。我选择MyEclipse进行编写,我们说一下MyEclipse的优势。 MyEclipse是一种具有可扩展的开放源代码IDE。MyEclipse可以在同一IDE中集成了来自不同供应商的工具,并实现了工具之间的相互操作,从而显著简化了项目工作流程。 MyEclipse框架的灵活性来自于它的扩展点。在XML中定义的已知接口,并充当插件的耦合点。扩展点的范围包括从简单字符串,到一个Java类的描述。 MyEclipse的最大特点是它能接受由Java开发者自己编写的开放源代码插件。2.2 Java 简

16、介Java是一种简单的、分布式的、面向对象的、可移植、解释的、安全的的多线程语言。它以其平台无关性、硬件结构无关性、强安全性、面向对象、语言简洁的特点,在网络编程语言中占据了无可比拟的优势,成为实现电子商务系统的首选语言2。2.2.1 Java的起源和发展Java是Sun公司在1995年推出的新兴的编程语言,它是一种跨平台的、应用于当前高速发展的网络的编程语言。在编程语言中,可认为Basic语言促使了C语言的出现,C语言促进了C+的出现,而C+又促使了Java语言的出现。自从Java正式推出后,以它特有的优势迅速发展,经过几年的发展,Java已经在软件开发等领域占有很大的市场。Java分为三种

17、:J2SE、J2EE和J2ME。J2SE是Java平台标准版3,主要应用于桌面程序和Java小应用程序开发;J2EE主要用于企业级开发和大型网站的开发;J2ME主要用于手机等移动设备程序的开发。2.2.2 Java特点 平台无关性Java的平台无关性能让这种软件在每个平台上都能正常地运行,就是只要写一次程序,在任何地方、任何时间该程序永远都能够运行。Java解释器生成与体系无关的字节码指令,这些指令对应于Java虚拟机里表示,Java解释器得到字节码后,对它进行转换,只要安装Java运行系统,Java就可以在任何处理器上运行。 简单性Java语言是一种面向对象的语言,它通过提供最基本的方法来完

18、成指定的任务,开发者只要知道一些概念就能够编写一些应用程序。 多线程设计Java的多线程,是为了满足人们对创建交互式网上程序的需要。用Java编写出来的应用程序可以同时执行很多任务。多线程机制使应用程序可以并行执行,而且同步机制保证了对共享数据的正确操作。 健壮性Java语言被病毒感染和破坏得最少。Java丢弃了难学和危险的指针功能,而大部分病毒程序常用的方法就是通过巧妙地运用地址变量如指针来获取计算机的资源,从而使程序不安全。 面向对象语言Java的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。对象中封装它的状态变量和相应的方法,实现了模块化和信息的隐藏;而类则是提供对象的

19、原型,并且通过继承的机制,子类可以使用父类所提供的方法,以实现代码的复用。 自动内存管理也可以说自动内存管理是Java健壮性的体现,内存管理是很多种应用程序内的很关键因素。在网络上的其他地方读取大量的数据,之后把该数据写入硬盘上的数据库内,一般的设计就是把数据读入内存中的某些集合内,对这些数据执行某些操作,之后把数据写入数据库。在数据写入数据库后,在下一批处理之前,临时存储数据的集合必须清空旧数据,或被删除后再建。这种操作可能执行很多次,很多语言要手工清空或删除集合数据结构。Java的自动内存管理4正好解决这一点,它使程序员不用再为内存管理写大量的代码。2.3 Java Socket 网络编程

20、简介2.3.1 Java Socket 网络编程基础网络编程,简单的理解就是两台计算机相互通信。其基本模型就是客户机/服务器模型,也就是通信双方中的一方必须提供一个固定的端口,而另一方则只需要知道这个端口,并去建立两者之间的联系,然后完成数据交换。这里提供固定位置的一方通常称为服务器,而建立联系的一方通常称为客户端5。基于客户机/服务器的Socket通信模型如图2-1所示:接收服务结果向服务器发出服务请求向服务器发送连接请求将处理结果反馈给客户端解释并处理请求信息接收用户请求信息阻塞,等待建立连接在Socket上监听客户端请求在制定服务器端公认的地址和端口服务器端创建Socket对象创建Soc

21、ket对象客户端建立连接请求信息反馈信息图2-1 基于客户机/服务器的Socket通信模型图Socket工作过程如下:(1)建立连接:服务器端程序分配一个端口号,开始监听来自客户端的请求。当客户请求一个连接时,服务器使用accept()方法打开Socket连接,将该Socket连接到此端口上。(2)数据通信:服务器和客户端使用Socket的InputStream(输入流)和OutputStream(输出流)进行通信。(3)关闭连接:通信结束,服务器和客户端程序断开连接,释放所有占用的系统资源。Java为这个模型的实现提供了简化的Socket编程接口。在程序中只要导入java.io包就可以方便的

22、使用java的Socket编程接口。Java中Socket连接机制如图2-2所示:服务器ServerSocket(port#)ServerSocket()Socker()OutputStreamInputStreamServer.close()客户端Socket(host,port#)(Attemptto connect)OutputSteramInputStreamSocket.close()图2-2 Socket的连接机制62.3.2 Socket编程的实现Socket类表示了系统的IP地址和端口号的结合,可以理解为客户端或者服务器端的一个特殊对象。它包含两个处理流的方法,一个是getIn

23、putStream(),另一个是getOutputStream(),分别用来获得网络的输入流和输出流。构造Socket对象的代码如下:Socket s = new Socket(IP, port); IP,port分别为服务器端的IP地址和服务器端的端口号。ServerSocket类是一个专门建立Socket服务器的类,它可以用服务器需要使用的端口号作为参数来创建ServerSocket对象。示例代码如下:ServerSocket ss = new ServerSocket(TCP_PORT);当一个客户端程序建立一个Socket连接,所连接的端口号为对应TCP_PORT时,服务器对象ss便响

24、应这个连接,在用上述ss对象调用accept()创建一个代表服务器的Socket对象。创建后服务器便可以利用这个Socket对象与客户端进行数据交换。示例代码如下:Socket clientSocket = ss.accept();在本系统的实现过程中,在支持网络对弈的服务器类的定义中需要使用ServerSocket类来响应多个客户端的连接请求。能够同时建立多个服务器,玩家可以选择不同的服务器参与游戏。2.4 Java 图形编程Java中的Graphics类是一个工具类,用来绘图和显示格式化文本,Graphics类是在java.awt包中声明的。在Java程序中绘图必须在一个窗口或者是一个容器

25、中进行,绘图窗体经常被设计为一个组件容器。显示格式化文本和绘图是调用Graphics类的drawXX()方法完成的,例如drawString(String)等等。绘图采用的坐标系7是原点在左上角,纵轴向下以像素为单位的坐标系。2.5多线程机制多线程机制是指单个程序可以运行多个不同的线程,执行不同的任务。因为线程只能在单个进程的作用域内活动,所以创建线程比创建进程要廉价得多,同一类线程共享代码和数据空间,每个线程有独立的运行桟和程序计数器(PC),线程切换的开销小。因此多线程编程在现代软件设计中在量采用。创建新线程必须编写一个线程类,用Java编写多线程代码有两种方式 直接继承Java的线程类T

26、hread; 实现Runnable接口无论采用哪种方式均需要在程序中编写Run()方法,线程在运行时要完成的任务在该方法实现。Thread 类封装了线程的行为。继承Thread类须重写run()方法实现各自的任务。程序中不要直接调用线程的run()方法,而是调用start()方法启动线程,让其进入可调度的状态,线程获得调度时将自动执行run()方法。由于Java的单重继承的限制,有些类必须继承其它个类时又要实现线程的特性。这时可通过实现Runnable接口的方式来满足两方面的要求。Runnable 接口只有一个方法 run(),它就是线程运行时要执行的方法,只要将具体代码写入其中即可。线程在调

27、度时将自动调用Runnable 接口对象的run方法。多线程是Java的一个特点,多线程可以使程序反应更快、交互性更强,并能提高执行效率。在网络五子中如果服务器是单线程的,则只能与一个客户端相连,就失去了网络对战的意义了。所以应该采用多线程方式。当服务器与一个客户端建立连接,就开启一个线程与之相连,同时监听其它用户的连接。请求的通信协议规定:public class Request public static final int LOGIN = 1;/输入用户名的请求public static final int CR_ROOM = 2;/创建房间的请求public static final

28、int GET_ROOM = 3;/获取房间列表的请求public static final int DEL_ROOM = 4;/删除房间public static final int FLUSH_ROOM = 5;/刷新房间的请求 public static final int IN_ROOM = 6;/进入房间 public static final int IN_RESULT = 7;/进入房间结果的请求 public static final int CHESS = 8;/落子的请求 public static final int SEND_MSG = 9;/发送聊天请求 public

29、 static final int NEWS_TART = 10;/新开游戏请求 public static final int WIN = 11;/代表赢的请求 public static final int GIVEUP = 12;/放弃请求 public static final int SUM = 13;/求和 public static final int SUM_RESULT = 14;/求和结果处理 public static final int EXIT = 15;/退出 public static final int EXIT_ROOM = 16;/退出游戏大厅的请求 pub

30、lic static final int ROVS = 17;/转观战请求 public static final int IN_LOOK = 18;/进入观战 public static final int LOO_GET_DATA = 19;/观看请求数据 public static final int BACK_CHESS = 20;/悔棋 public static final int BACK_CHESS_RESULT = 21;/悔棋结果处理3 需求分析和总体设计3.1 需求分析作用软件需求分析是软件开发周期的第一个阶段,也是关系到软件开发成败的最关键一步。只有通过了软件需求分析,

31、才能把软件的功能和性能由总体的概念性和理论性描述转化为具体的规格说明,从而建立软件开发的基础。实践证明,需求分析工作进行得准确程度,在很大程度上决定了软件开发的成败。软件需求分析的任务就是让用户与开发者明确开发的是一个什么软件。具体的说,就是通过对问题及其环境的理解、分析与综合把握,建立逻辑模型,完成软件的逻辑方案设计。3.1.1 界面需求分析软件的界面简洁明了而不失精美,操作简单容易,功能按钮名称简单易懂,棋盘的大小,棋子的样式。3.1.2 软件需求分析现有的网络编程模式主要分成两类:一种是基于C/S(Client/Server)模式,另一种是B/S (Browser/Server)模式。网

32、络五子棋系统应用于局域网,对交互性要求很高,本系统选用了C/S 模式进行实现,网络内部使用TCP/IP 方式利用Socket提供的服务,使用Java Graphics类进行用户图形界面的搭建。系统分成两个部分,分别为服务端程序以及客户端程序8。结合实际情况,将服务器端的程序和客户端的程序放在一起,便可以更为方便的建立游戏和参与游戏,有效解决了在局域网中服务器未开启,则无法进行游戏的缺陷。五子棋网络游戏主要分为两个部分,游戏服务端和游戏客户端。游戏服务端主要存储所有连线客户的相关信息及各种状态,并负责游戏客户之间数据的传递;游戏客户端提供给客户联机对战按钮,使其能与其他玩家进行游戏。由于将服务器

33、端和客户端程序放在一起,所以可以减少界面绘制的冗余代码,使得客户端和服务器端使用相同的界面。3.2 总体设计总体设计是软件开发过程中的另一个重要阶段,在这一阶段中将根据需求分析中提出的逻辑模型,合理地完成物理模型的设计。这个阶段的主要目标是将反映了用户信息需求的逻辑方案转换成物理方案,并为下一阶段提供必须的技术资料。总体设计应遵循以下原则: 整体性:软件是作为统一整体而存在的。因此,在总体设计中要从整个软件的角度去考虑。 灵活性:为保持软件长久的生命力,要求该软件具有很强的环境适应性。为此,该软件必须具有较好的开放性与结构的可变性。 可靠性:可靠性是指软件抵御外界干扰的能力及受外界干扰时的恢复

34、能力。 经济性:经济性是指在满足游戏软件需求的前提下,尽可能地减少对游戏的开销。3.2.1 系统设计思想通过服务器的连接,不同的玩家可以连接到各自想参加比赛的服务器地址,并开始各自的游戏。通过安全的SOCKET连接交换数据。通过多线程,使得每个对战的双方不会受到第三方数据的干扰。本系统的功能能够实现一个在网络上供客户进行对战的五子棋网络游戏,因为是C/S 模式的网络游戏,客户只要连接到服务器上,就能选择任何其它用户已创建好的游戏进行对战游戏。在C/S模式游戏中,Server一般提供所有用户的全部信息,并能提供客户之间的信息转发。客户之间的通讯必须通过Server进行,因为多个客户能够连接到同一

35、台Server上,所以Server必须用Thread 负责每个用户的通讯和消息处理。客户连接成功,Server利用特定的客户Thread连接不断从客户读取数据,实现客户和服务器或者客户与客户之间的信息的交互。客户端同样采用的是线程控制的思想,在每一个客户端连接上服务器后,就为此客户端启动一个网络收发数据线程。3.2.2 系统总体设计系统使用Socket 技术以及java 多线程机制进行客户与服务端之间信息的交互,但一个真正实用程序必须针对具体应用定制一套协议用于用户程序之间进行交互,而该协议的定制往往是编写程序的关键也是核心内容,该协议的完善决定程序是否能够正常运行。所谓协议9就是程序之间交互

36、的信息的格式规定, 服务端和客户端都遵循该协议才能够进行对话, 通俗讲是人类之间的语言。 3.3 功能模块及流程3.3.1 系统主要模块游戏各模块功能如表3-1:表3-1 各模块功能模块名称功能联机对战用于提示玩家将要进行和他人的对战,点击后跳转到输入玩家姓名的页面,在此同时其内部执行客户端的连接。输入玩家姓名输入玩家姓名,并检测该名称是否已经存在,循环执行。游戏大厅创建房间用于创建自己的房间并等待他人的加入。点击并确定创建,会出现自己所创建房间号码,同时创建房间按钮会变成删除房间按钮。进入房间用于用户选择要进入的房间,点击之后,等待对方是否同意其加入。转观战用于查看其它玩家对战的请求,点击会

37、跳转到对战大厅,选择想要观看的对战房间名称,点击进入观战。五子棋对战界面新开用于提醒对方玩家是否新开一局。悔棋用于询问是否自己可以悔棋,即撤销之前的一步棋子。放弃放弃正在进行的对战。求和用于询问对方玩家是否同意求和。退出强制性退出正在进行的对战聊天框在右边输入和对方玩家想要说的话,按Enter键发送,对方就可以看到,并且可以给与回复。同时根据上面的系统的设计要求,可以将此网络五子棋游戏分为以下五个模块:初始化模块:建立棋盘数组并清零;初始化界面并在屏幕上画出棋盘。主循环控制模块:负责控制下棋顺序,当轮到某方下子时,负责将程序流程转到相应的模块中。玩家落子模块:即用户在指定落子区域单击后,程序就

38、会得到该棋子的坐标,并且将棋盘数组中坐标处记录棋子的颜色,1代表白色,2代表黑色,以说明是哪一方下的棋子。胜负判断模块:根据预先设定的五子棋规则,判断游戏输赢。网络模块10:网络功能的实现,使两台不同计算机的用户通过网络连接,实现网络对弈的功能。网络编程的模式和选取网络编程模式主要分成两类: 一种是基于C/S(客户机/服务器)模式, 另一种是B/S(浏览器/服务器)式;C/S 程序具有好的交互性, 功能强大, 但是客户端必须安装客户端软件, 限制了其应用; B/S 模式下要求客户端具有浏览器, 但浏览器在安全方面有一些限制, 交互性与功能有一些限制网络五子棋系统应用,所以一般的网络五子棋游戏都

39、选用了C/S 模式进行实现,使用TCP/IP 方式利用Socket 通过传输层提供服务。在Socket工作中,用ClientSocket类建立客户端连接,用ServerSocket类建立服务器端连接,这两个组件分别用来操纵客户端和服务器端的Socket对象进行连接和传输数据。在通信过程中,服务器端应用程序先启动,然后等待客户端的连接请求。在另外一台计算机上启动客户端应用程序,同时输入服务器端Socket地址和端口号进行选择服务器,找到服务器后就向服务器端发请求连接服务器端,允许连接后即向客户端Socket收到Accept信号。客户端和服务器端就正式建立起了后, 就可以分别调用Tserve Rs

40、ocket和TClientSocket的Socket属性和客户端进行数据传输。客户端和服务器端Socket组件必须设置相同的端口号。3.3.2 服务器端作用服务器端11主要通过建立流连接来连接客户端,与客户端进行相互通信、转发信息。接收客户端的信息,接收信息后按照此客户端的要求将信息发送到相应的客户端,服务器端起到了中转的作用。服务器类用于接收客户端的连接,并为每个客户端在服务器端启动唯一的守护线程,线程主要功能是接收客户端发送过来的消息并做出相应的处理。客户端发送到服务器端的主要消息有两部分:一部分是客户端发送给服务器端需要服务器端进行处理的,如客户端发送过的连接信息、客户端改名信息、客户端

41、断开连接信息等;另一部分是客户端发送给服务器端需要服务端转发给其他客户端的消息,如客户端给游戏另一方发送的棋盘状态数据、聊天信息等。玩家进入游戏界面时,如果玩家不想进入别人已经建立好的游戏中,那也可以自己从界面中建立一个房间,等待其他玩家的进入。直接点击创建房间,这样一个自己的游戏就建立了,如果有玩家加入游戏,系统会提示某某玩家请求进入房间,这时你可以选择是或者否。游戏各模块功能跟客服端的模块相同。服务器类使用状况如图3-1:接受玩家处理消息显示状态转发消息服务器端图3 -1 服务器类用况图3.3.3 客户端作用游戏客户端的主要功能是为了初始化和组织用户界面,并且定义了各个按钮的功能。玩家进入

42、游戏界面时,首先提示玩家选择联机对战,当玩家选择联机对战后,会弹出请输入玩家名的聊天框,输入玩家名点击进入(在此判断是否会有相同名称的玩家名),跳转到另一个玩家界面,再此玩家可以创建房间或者加入已经有了的房间。游戏客户端使用状况如图3-2:界面组织游戏控制信息交换玩家输入游戏玩家图3-2 游戏客户端用况图客户端副类的主要功能是当前玩家与其他玩家进行对弈时,网络客户端处理需要发送和接收的消息。先手判断落 子绘制棋盘胜负判断玩家图3-3 棋盘类用况图4 详细设计及实现4.1 系统主流程玩家进入游戏,选择联机对战,输入玩家昵称,进入游戏大厅,选择进入房间、创建房间或者转观战,进入房间,进入对弈阶段。

43、对弈结束,从新开始。系统主流程如图4-1:开始联机对战用户登录进入游戏大厅随机分配转观战用户存在创建房间悔棋进入房间进行对战重新输入求和退出放弃聊天图4-1 网络五子棋游戏流程图4.2 如何判断输赢输赢的判断是网络五子棋游戏中一个很重要的部分。当双方每放下一个棋子的时候,程序都要进行判断是否已经产生了输赢。如果是,则停止游戏,并发送结果给服务器,服务器再发送结果给对方。横,竖或者对角线方向上拥有五颗同样的棋子时,即为胜利。图4-2 五子棋判断输赢示意图当在棋盘中放入一个棋子时,比如白色。程序要计算它左边连在一起的白色棋子的个数,然后计算右边与它相连在一起的白色棋子的个数。再将两数相加,如果为四

44、,与自己加起来刚好为五。则白棋获胜。用同样的方法在垂直和对角线方向进行判断同色棋子个数。如果获胜,则客户端发送信息给服务器,否则由对方下棋,并重复进行相同的运算。具体的算法如下:1.竖着判断输赢的算法:public boolean isWin(int i,int j)int j1=j-1;int count=1;while(true) if(j1=0&chessBoardij=chessBoardij1)count+;j1-;elsebreak;j1=j+1;while(true) if(j1=5)return true;return false;2.横着判断输赢的算法:public boolean isWin1(int i,int j)int count=1;int i1=i-1;while(true) if(i1=0&chessBoardij=chessBoardi1j)count+;i1-;elsebreak;i1=i+1;while(true) if(i1=5)return true;return false;3.斜着(东北方向)判断输赢的算法public boolean isWin2(int i,int j)int count,i1,j1;count=1;j1=j+1;i1=i+1;while(true) i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁