欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    基本于CS模式的五子棋网络对战游戏说明书.doc

    • 资源ID:863262       资源大小:642.55KB        全文页数:38页
    • 资源格式: DOC        下载积分:10积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要10积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基本于CS模式的五子棋网络对战游戏说明书.doc

    1、目录1 引言11.1 网络游戏的发展现状11.2 网络游戏的发展前景21.3 网络五子棋的设计意义32 开发工具,环境及其技术32.1 Java介绍32.2 Access数据库62.3 JAVA 编程环境73 网络五子棋需求分析83.1 需求分析84 网络五子棋的概要设计114.1 概要设计114.2 关键技术和难点135 详细设计185.1 chessface包185.2 Client包195.3 Server包195.4 userlogin包206 系统设计216.1 界面设计216.2 棋盘绘制266.3 连接Access数据库的实现276.4 五子棋多线程的实现286.5 五子棋的胜负

    2、算法实现297 系统测试307.1 测试服务器307.2 测试客户端318 结论及体会358.1 不足与改进358.2 经验总结358.3 开发体会36参 考 文 献37致 谢381 引言1.1 网络游戏的发展现状网络游戏在中国萌芽与20世纪90年代末并高速发展成为互联网最具影响力的产业!网游凭借巨大的经济收益、前景潜力、市场份额短期高速发展!吸引了各行各业的投资者涉足网游,尤其是门户网站的参与转型(新浪、网易、搜狐等等都涉足网游)!巨大的市场份额,目前网游在全国近2亿网民中渗透率达到35%左右!用户超过5000万,其中棋牌平台类游戏在网民中渗透率约为20%。08年全国网游线上交易规模达到13

    3、0亿人民币,并且每年以30%左右的速度增长。棋牌游戏的特点,棋牌游戏在中国拥有几千年的历史!丰厚的历史文化底蕴,巨大的群众基础。棋牌游戏不同于角色、对战类大型网游,棋牌游戏规则性更强,操作简单,随时随地进行。主要用户群体为消费能力更强的企事业单位白领、上班族、商户老板等,男女均衡,学生群体、低学历的用户相对较少。棋牌游戏具有最稳定的用户群体,一个用户一段时间可能会对一个大的网络游戏感兴趣(通常6-9个月),但不会永远,但棋牌类游戏能保证一个用户永远喜欢和使用(玩麻将能玩一个通宵),并且我们的特色是根据合作方的需求定制本土化的特色游戏以达到适应运营商本地需要,促进人气聚集的效果。网络棋牌行业门槛

    4、低、小游戏平台众多、市场混乱,棋牌游戏的良好发展和效益吸引了国内很多的投资者,总体而言,网络棋牌游戏行业在国内还属于扫盲阶段,发展空间巨大。1.2 网络游戏的发展前景Doshow视频棋牌游戏迎来发展春天,网络游戏产业连续8年快速增长,截至到2007年已经有接近100亿的市场,而休闲游戏在其中差不多占有80%左右的份额。随着休闲游戏被越来越多用户接受,它已经不仅仅是一个互动娱乐形式的产品,更是一种网络娱乐的生活状态。网络休闲游戏有着简单的操作方式和超低的进入门槛,尤其是拥有广泛用户群体的棋牌游戏,游戏内容和参与形式均为为百姓熟知,可以说老幼皆宜。此外,伴随着网络的普及和电子设备的发展,休闲游戏日

    5、渐融入生活,走进千家万户,成为人们日常生活足不出户的交流和休闲娱乐平台。用户群体的增多,使更多企业进入这个市场,来使自身利益最大化。为了能占有一席之地,厂商纷纷推出自己的特色服务,视频服务被合理的融入到游戏当中,除了满足用户娱乐的基本需要,更让用户感受到face to face游戏的真实快感!作为国内最早提供视频群体聊天娱乐的聊天室平台Doshow在视频领域的应用是具有得天独厚的技术优势。如今顺势推出的这款视频棋牌游戏,就游戏本身来说,最大的特色就是在游戏的过程中同时能进行视频语音的聊天,或者共享影音娱乐,视频窗口能根据玩家的需求随意的拖动和摆放,并且选择是否打开视频。且在边游戏的同时还能点击

    6、聊天大厅进入DOshow多人视频聊天室进行互动娱乐,这在同类产品中是没有的。当休闲游戏逐渐成为日常社会活动不可或缺的一部分,视频棋牌类游戏也正在渗透文化、融入生活、改变生活。其他休闲游戏平台有的这里都有,更重要的是,你可以清清楚楚地知道自己的队友和对手都长什么样、在做什么。在这个娱乐至上的社会,人们的沟通和交流无处不在吗,更不局限于字里行间的文字表达,大家要的是真实的互动。如今,Doshow休闲游戏平台,实现了运营理念和技术开发上的突破。让休闲娱乐、视频互动、聊天交友等功能融为一体,让游戏乐趣增多,视频游戏真正迎来了春天。1.3 网络五子棋的设计意义本程序旨在用JAVA实现一个基本于C/S模式

    7、的五子棋网络对战游戏。玩家作为客户端通过服务器端与其它玩家进行对战,聊天等功能。通过实现本程序加深对计算机网络编程的了解。2 开发工具,环境及其技术2.1 Java介绍2.1.1 Java的诞生Java是1995年6月由Sun公司引进到这个世界的革命性的编程语言,它被美国的著名杂志PC Magazine评为1995年十大优秀科技产品。之所以称为革命性编程语言,是因为传统的软件往往与具体的实现环境有关,一旦环境有所变化就需要对软件进行一番改动,耗时费力,而Java编写的软件能在执行码上兼容。这样,只要计算机提供了Java解释器,Java编写的软件就能在其上运行。Java的出现源于对独立于平台语言

    8、的需要,希望这种编程语言能编写出嵌入各种家用电器等设备的芯片上,且易于维护的程序。1990年Sun公司成立了由James Gosling领导的开发小组,开始致力于开发一种可移植的、跨平台的编程语言,该编程语言能生成正确运行与各种操作系统、各种CPU芯片上的代码。他们的精心研究和努力促成了Java的诞生。2.1.2 Java体系结构随着Java技术的不断发展,Sun公司推出了Sun ONE体系结构,它以Java语言为核心,根据市场需要进一步细分为:针对普通PC应用的J2SE(Java 2 Standard Edition)、针对企业级应用的J2EE(Java 2 Enterprise Editi

    9、on)和针对嵌入式设备及消费类电器的J2ME(Java 2 Micro Edition)三个版本J2SE:Java自1996年正式发布以来,经历了出生,成长和壮大三个阶段,现在已经成为IT领域的主流编程语言。其中J2SE就是指从1.2版本开始的JDK,它为创建和运行Java程序提供了最基本的环境。J2SE中主要包括那些构成Java核心的类和接口,例如:图形界面设计、多线程、输入/输出、网络编程、数据库编程等。如图2.1显示了J2SE 5.0中基本类库的结构。Java LanguagejavaDeploymentSoundInput MethodsAccessibilityDrag in Dro

    10、pImage I/OPrint ServerIDLSolarisJava Hotspot Client CompilerjavacjavadocaptjarjavapJDPAOtherSecurityIntlRMIIDLDeployMonitoringTrouble-shootingJVM TIJava Web StartJava Plug-inAWTSwingJava 2DJDBCJNDIRMIRMI-IIOPMathI/OBeansIntl SupportJMXJNlNew I/OJava Hotspot Server CompilerWindowsLinuxOtherXML JAXPNe

    11、tworking Std override mechanism SerializationExtension MechanismSecurityManagementLang & UtilCollectionsJARLoggingConcurrency UtilitiesZipPreferences Ref Object Regular ExpressionsVersioningReflection图2.1 J2SE 5.0 基本类库组织结构2.1.3 Java 程序类型简介随着网络技术的不断发展,目前的应用程序除了传统的单机版之外,大多数都需要网络的支持。根据网络运行机制的不同,又分为B/S(

    12、Browser/Server)结构和C/S(Client/Server)结构。B/S结构被称为浏览器/服务器模式,其最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。客户机只要安装一个浏览器,如Netscape Navigetor 或 Internet Explorer,浏览器就可以通过HTTP等通用网络协议同Web服务器进行交互。C/S结构被称为客户/服务器模式,客户端需要安装专用的客户端软件,开发人员需要进行网络编程,使客户端与服务器进行通信。C/S和B/S的结构如图2-2所示浏览器Web 服务器客户端数据库B/S模式C/S模式图2.2 C/S和B/S的结构图2.2 Acces

    13、s数据库2.2.1 Access数据库基本信息Microsoft Office Access是由微软发布的关联式数据库管理系统。它结合了 Microsoft Jet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程式之一。Assess能够存取 Access/Jet、Microsoft SQL Server、Oracle,或者任何ODBC 兼容数据库内的资料。熟练的软件设计师和资料分析师利用它来开发应用软件,而一些不熟练的程序员和非程序员的“进阶用户”则能使用它来开发简单的应用软件。虽然它支持部份面向对象技术,但是未能成为一种完整的面向对象

    14、开发工具。 其实Access 也是微软公司另一个通讯程序的名字,想与 ProComm 以及其他类似程序来竞争。可是事后微软证实这是个失败计划,并且将它中止。数年后他们把名字重新命名于数据库软件。2.2.2 Access数据库用途Microsoft Access在很多地方得到广泛使用,例如小型企业,大公司的部门,和喜爱编程的开发人员专门利用它来制作处理数据的桌面系统。它也常被用来开发简单的WEB应用程序这些应用程序都利用ASP技术在Internet Information Services运行比较复杂的WEB应用程序则使用PHP/MySQL或者ASP/Microsoft SQL Server 它

    15、的使用方便程度和强大的设计工具为初级程序员提供许多功能。不过,这种便于使用可能使人误解。这类开发者都是没有在应用或者数据设计方面训练的办公室从业人员。因此许多人以为这样的开发者能够创造可用的系统,但也有很多人认为工具本身的局限性产生了这样的误导。 一些专业的应用程序开发人员使用 Access 用作快速应用开发,特别是给街道上的推销员制作一个初型或独立应用程序的工具。可是如果是透个网络存取数据的话,Access 的可扩放性并不高因此当程序被较多使用者使用时,他们的选择多会是倾向于一些客户端-服务器为本的方案,例如 Oracle、DB2、Microsoft SQL Server、Windows S

    16、harePoint Services、PostgreSQL、MySQL、Alpha Five、MaxDB,或者Filemaker。无论如何,不少 Access 的功能(表单,报告,序列和VB代码)可以用作其他数据库的后期应用,包括 JET(档案为主的数据库引擎,Access 缺省使用)、Microsoft SQL Server、Oracle和任何其他跟ODBC兼容的产品。这种方法允许开发者把一个成熟的应用的数据移动到一台更大功率的服务器而没有已经在适当的位置牺牲发展。 很多开发者谁使用Microsoft Access使用Leszynski命名约定,虽然这不普遍;它是一次编程大会,并非一个DBM

    17、S实施的规章。2.3 JAVA 编程环境2.3.1 环境变量(1) java(TM) SE Development Kits,即JDK (2)设置环境变量 右击 我的电脑-属性-高级-环境变量 Path:系统在任何路径下都可以识别Java命令需要设置的变量 Path:C:Progran Filesjavajdk1.6.0_01bin classpath:为java加载类(包括class,lib)的路径,只有类在classpath中,Java命令才能识别classpath:Progran Filesjavajdk1.6.0_01libdt.jar Progran Filesjavajdk1.6.

    18、0_01libtools.jar JAVA_HOME:java的安装路径 JAVA_HOME:Progran Filesjavajdk1.6.0_013 网络五子棋需求分析3.1 需求分析软件的需求分析是软件生存期中重要的一步,也是决定性的一步。只有通过需求分析才能把软件功能和性能的总体概念描述为具体的软件需求规格说明,从而奠定软件开发的基础。在此阶段,了解用户要求本软件必须满足的所有功能和限制,以及用户对软件功能和性能的要求,弄清用户想要软件“做什么”,准确地表达用户的要求。网络互联实现信息的共享成为以后计算机的发展趋势,现有的网络编程模式主要分成两类:一种是C/S模式,另一种是B/S模式;

    19、C/S模式具有好的交互性,功能强大,但是客户端必须安装客户端软件,限制了其应用;B/S模式下要求客户端具有浏览器,但浏览器在安全方面有一些限制,交互性与功能有一些限制,网络五子棋系统应用与局域网,对交互性要求较高,本系统选用了C/S模式进行实现,网络内部使用TCP/IP方式利用Socket通过传输层提供的服务,使用Java进以及服务端程序,行图形用户的搭建,系统分成两个部分,分别为服务端程序以及客户端程序。五子棋网络游戏主要分为两部分,游戏服务端和游戏客户端。五子棋游戏规则:游戏双方各执一种颜色的棋子,轮流在棋盘下棋子、一方的棋子在横、竖、两个对角线上首先到达五子者为胜方;游戏服务端主要存储所

    20、有连线客户的相关信息及各种状态,并负责游戏客户之间信息的传递;游戏客户端提供客户连接服务器,具有创建、加入、退出游戏等等功能,并能与互联客户进行游戏(1)功能需求1能通过网络进行下棋2符合五子棋的基本规则3提供水平坐标和垂直坐标功能4能在棋子上显示的落子的顺序数5提供多种背景6提供玩家之间的聊天功能7可自行输入用户名称8能够用户的管理,注册9提供用户下棋胜负排名统计,并且在主界面显示(2)用户界面需求1界面友好、亲切2界面简洁、不花哨3操作界面直观、不繁琐(3)五子棋的行棋规则1五子棋行棋时,黑棋先下第一子,由天元开始,后白棋在黑棋周围的交叉点的落子。接着黑方再以天元中心的25个交叉点的范围内

    21、落盘面的第三子,之后黑白双方相互顺序子。2最先在棋盘线交点横向,纵向,斜向形成已方的五个棋子连续的一方为胜。3出现禁手对方指出后将判负,其中包括两个或两个以上的活三,活四,长连均称之为禁手。4禁手只对黑棋有效,白棋无禁手。5黑方禁手形成时,白方需立即指出,黑方将被判负。若白方未发现黑方禁手存在而继续应子,其后指出黑方禁手不能判黑方负。6黑方连五与禁手同时形成,因黑方已连成五即黑方已获胜,故禁手规则失效。7在对局中,一方自行中止比赛如:中途退场,将被判负。8如下至最终一子仍不分胜负则定为平局。本系统的功能能够实现一个在网络上供客户进行对战的五子棋网络游戏,客户只要登录到服务器上,就能选择任何其他

    22、用户已创建好的游戏,进行五子棋对战游戏,是C/S模式的网络游戏。在C/S模式游戏中,Server一般提供所有用户的全局信息,并能提供客户之间的信息转发,客户之间的通讯必须通过Server进行。因为在多个客户能够连接到同一台Server上,所以Server必须用Thread负责每个用户的通讯和消息处理。服务器端程序通过一个Thread线程类监听客户端的连接,一旦客户连接,为该客户建立连接并启动一个特定的客户Thread,利用该连接不断从客户读取数据,实现客户和服务器或者客户与客户之间的信息的交互。客户端同样采用的是线程控制的思想,在每一个客户端连接上服务器后,就为此客户端启动一个网络收发数据线程

    23、。4 网络五子棋的概要设计4.1 概要设计系统使用Socket技术以及java多线程机制结合在进行客户与服务端之间信息的交互,但一个真正实用程序必须针对具体应用定制一套协议用于用户程序之间进行交互,而该协议的定制往往是编写程序的关键也是核心内容,该协议的完善决定程序是否能够正常运行。所谓协议就是程序之间交互的信息的格式规定,服务端和客户端都遵循该协议才能够进行对话。根据上面的需求分析,将系统分为以下几个模块(1)五子棋接口模块:聊天窗口模块:创建聊天窗口为TextArea,并初始化棋盘模块:创建初始化棋盘为Panel,添加按钮监视器,启动线程,定义胜负条件。线程模块:创建线程控制模块:定义多个

    24、Button并且添加到布局中,Button实现创建游戏,加入,退出等功能聊天输入模块:在布局中添加Textfield实现了聊天信息的输入用户显示模块:显示用户(2)五子棋客户端模块:通过调用各个类的方法和对象,实现客户端的初始化,并完成对服务器的连接,通过方法的调用实现五子棋的功能。(3)五子棋服务器模块:通过线程监听来自用户的信息,并完成信息的处理返回给客户端,并显示在服务器的TextArea里面(4)用户管理模块:用户登录模块:程序第一个界面,通过输入用户名和密码,进入客户端主界面。用户注册模块:注册信息传递给数据库连接数据库模块:通过ODBC连接数据库。整个系统流程图如图4.1所示。登录

    25、用户1注册客户端1客户端2用户2注册登录建立游戏加入游戏开始游戏判断胜负结束图4.1 网络五子棋流程图4.2 关键技术和难点4.2.1 Java Socket 网络编程网络编程,简单地理解就是两台计算机相互通信,其基本模型就是客户机/服务器模型,也就是通信双方中的一方必须提供一个固定的位置,而另一个则是只需要知道这个固定的位置,并去建立两者之间的联系,然后完成数据交换。这里提供固定位置的一方称为服务器,而建立联系的一方称为客户端。基于客户机/服务器的Socket通信模型如图4.2所示创建Socket类对象指定服务器端公认的Socket地址和端口在Socket上监听客户端的连接请求阻塞,等待连接

    26、的建立接收客户端的请求信息解释并处理请求信息将处理结果返回客户端创建Socket类对象向服务器端发送连接请求向服务器发出服务请求接收服务结果服务器端客户端建立连接服务请求服务相应图4.2 基于客户机/服务器的Socket通信模型4.2.2 Java数据库连接JDBC(Java Data Base Connection)是Java数据库连接API。简单地说,JDBC能完成3件事:1. 与一个数据库建立连接2. 向数据库发送SQL语句3. 处理数据库返回的结果JDBC在设计上和ODBC很相似。JDBC和数据库建立连接的一种方式是首先建立起一个JDBC-ODBC桥接器。由于ODBC驱动程序被广泛使用

    27、,建立这种桥接器后,使得JDBC有能力访问几乎所有类型的数据库。本程序设计的数据库user.mdb为Access数据库,有一个表为user如表4.1所示表4.1 user数据表属性名称类型长度备注userIDChar10用户名passwordChar20密码设置passWordagainChar20确认密码SexChar4用户性别设置EmailChar20用户的注册邮箱TimeChar10注册时间winNumInt4用户胜利次数winCountInt4用户胜利总分数loseNumInt4用户失败次数loseCountInt4用户失败所扣分数ErrorChar10用户的一些错误操作为了同user

    28、.mdb数据库建立连接,首先要创建一个ODBC数据源。打开Windows中的控制面板,选择“性能和维护”,“管理工具”“数据源ODBC”。1. 打开“数据源ODBC”,将出现ODBC数据源管理器对话框,如图4.3所示,该对话框显示了已有数据库的名称。2. 在ODBC数据源管理器对话框中选择“用户DSN”,然后单击“添加”按钮,将出现安装数据源的驱动程序对话框,可以在选择相应的驱动程序。由于使用的是ACCESS数据库,所以选择Microsoft Access Driver(*.mdb),如图4.4所示图4.3 “ODBC数据源管理器”对话框图4.4 “选择驱动程序”对话框3. 在“选择驱动程序”

    29、对话框中选择好驱动程序后,单击“完成”按钮,将出现“创建数据源”对话框,如图4.5所示,需要为创建的数据源起一个名称,并为创建的数据源选择一个数据库。在这里新创建的数据源名称为sun,选择的数据库是C:user.mdb。最后单击创建数据源对话框上的“确定”按钮完成数据源的创建。图4.5 “创建数据源”对话框现在有了一个数据源,这个数据源就是一个数据库。为了要连接到这个数据库,首先要建立一个JDBC-ODBC桥接器:Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);这里,Class是包java.lang中的一个类,该类通过调用静态方法forName加载s

    30、un.jdbc.odbc包中的JdbcOdbcDriver类来建立JDBC-ODBC桥接器。建立桥接器时可能会发生异常,因此要捕获这个异常。建立桥接器标准如下:Try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);Catch (ClassNotFoundException e)然后是连接到数据库,首先使用java.sql包中的Connection类声明一个对象,然后再使用类DriverManager调用它的静态方法getConnection创建这个连接对象:Connection con=DriverManager.getConnection(“jd

    31、bc:odbc:sun”,“”,“”);建立连接时应捕获SQLException异常:Try Connection con=DriverManager.getConnection(“jdbc:odbc:sun”,“”,“”);Catch (SQLException e)这样就建立了到数据库user.mdb的连接。5 详细设计整个程序工程分为4个包,如图5.1所示图5.1 工程窗口5.1 chessface包Chessface包中主要包括5个部分,下棋界面chessPad,聊天信息界面chatPad,用户界面userPad,聊天输入界面inputPad,按钮控制界面controlPad。在此包中

    32、设计并定义了相关功能。玩家启动程序后,首先会弹出登录界面,玩家需要注册用户信息,通过注册的用户名和密码才能够登录五子棋的主界面。玩家进入游戏界面后,用户需要连接服务器,当玩家连接上服务器后,就会在界面的左上角显示出用户的初始玩家名,在聊天内容框中给出用户提示,提醒玩家先创建游戏或者加入别的玩家建立好的游戏,玩家在邀请其他玩家加入自己建立好的游戏或者要加入其他玩家建立的游戏,需要玩家选择在用户列表界面选择要操作的玩家,再加入。此游戏界面简单,用户易操作上手,适合各个年龄的人群。userPad用于显示服务器发送过来的当前连接上服务器的用户列表,活动玩家的玩家名称。chatPad用于显示服务器发送过

    33、来的提示信息以及用户公聊或私聊的内容。chessPad用于绘制棋盘及棋子,以及当前的提示信息,另外五子棋胜负条件也在次模块实现。inputPad用于用户选择要公聊或私聊的对象,即所有人或某一具体的玩家,输入要发送的消息,发送给服务器,通过服务器转发出去。controlPad用于对当前的游戏界面进行实时的控制,包括建立游戏、加入游戏、放弃游戏、选择界面颜色、退出游戏。5.2 Client包程序的主界面在Client包中进行初始化,包括对chessface包中的类的对象的调用,实现在主界面中各个模块。chessClient为五子棋客户端框架的构造函数。用来初始化一些对象,布局和为按钮添加监听器。c

    34、onnectServer为和服务器建立连接的通信函数。actionPerform动作监听器,响应按钮点击动作。keyPressed键盘监听器,响应回车按下事件。clientThread创建客户端线程,完成客户端对接收到信息的处理。如果接收到的信息以/userlist 开头,将其后的用户名提取出来,添加到输入信息Panel左边的用户列表中。如果如果接收到的信息以/yourname 开头,将用户名显示在客户端对话框标题栏。如果如果接收到的信息以/reject开头,在状态栏显示拒绝加入游戏。如果如果接收到的信息以/peer开头,则记下对方的名字,然后进入等待状态5.3 Server包chessSer

    35、ver服务器框架类继承了Frame类并且添加了监听器。MessageServerPanel显示服务器及用户信息的Panel类。ServerThread服务器线程,主要用于服务器与客户端的通信。messageTransfer对客户端发来的消息处理的函数,处理后转发回客户端。处理消息的过程比较复杂,要针对很多种情况分别处理。publicTalk发送公共消息的函数,将消息向每个客户端都发送一份。peerTalk选择对象发送消息,参数peerTalk为发送的用户名,后面的参数为发送的消息。chessPeerTalk此函数也用于选择发送消息,但不能发送给自己。Feedback用于处理消息回馈的函数。ge

    36、tUserList获取用户列表的函数,此函数读取clientNameHash获取用户列表, 然后将其保存在一个字符串userList中。getHashKey给出HashTable和值对象,获取相对应得键值的函数。clientClose用于和客户端断开的函数。makeMessageServer初始化消息服务器的类。5.4 userlogin包Userlogin包中包括Constants类,JdbcBean类,tr类,UserFrame类,UserReg类。Constants类主要定义了一个端口号。JdbcBean类主要实现了连接数据库的功能。Tr类定义了一个用户列表。UserFrame实现了用户

    37、登录界面。UserReg实现了用户注册界面的功能,能够连接数据库。6 系统设计6.1 界面设计6.1.1 登录界面设计作为一款网络版的五子棋,需要实现其对于用户的管理,所以在其登录界面需要有注册用户这个按钮,如图6.1所示图6.1 登录界面输入用户名和密码既可以登录客户端进入五子棋主界面,用户名和密码必须是存在与数据库user.mdb中,否则则会弹出错误界面,如图6.2所示图6.2 登录错误界面6.1.2 注册界面设计具有用户管理功能的网络五子棋,必然有用户注册,用户需要注册用户名、密码、性别、注册邮箱。如图6.3所示图6.3 注册界面当在注册界面中,输入相应的数据,输入用户名“xxx”、密码

    38、“xxx”、性别“男”、邮箱地址 “xxx”。点击“确定”,将会弹出注册成功界面如图6.4所示图6.4 注册成功界面6.1.3 五子棋主界面设计在主界面需要有五子棋棋盘,用户胜负排名界面,用户聊天界面,聊天内容显示界面,客户端状态界面,功能界面,主界面如图6.5所示。图6.5 五子棋主界面主界面左上方是用户胜负排名的界面,可以看出根据用户胜负次数排名,胜利次数越多排名越靠前。在主界面上方是客户端状态,目前是没有连接服务器状态。主界面最大的部分既是中间的棋盘界面,棋盘划分1919的正方形区域,用户可以在次界面上进行五子棋的游戏。主界面靠下是用户聊天界面,用户可以在“输入发送信息”的Lable 后

    39、面的Textfild 内输入聊天信息,按回车发送消息。发送的消息将会出现在左下方的空白区域中。主界面最下方是功能界面,主要包括5个Button分别是“连接主机”、“建立游戏”、“加入游戏”、“放弃游戏”、“选择界面颜色”、“关闭程序”。“连接主机”即是连接服务器,当服务器开启时,点击“连接主机”按钮,客户端状态显示如图6.6所示图6.6 主界面连接服务器成功因为五子棋需要2台计算机的客户端同时运行,才能达到游戏的目的,即一个客户端需要建立游戏,另一个客户端加入游戏。建立游戏的客户端需点击“建立游戏”按钮创建游戏,如图6.7所示图6.7 建立游戏成功客户端状态而另一个客户端需要加入这个建立的游戏

    40、,加入游戏后另一客户端状态,如图6.8所示图6.8 另一客户端已加入游戏至此2个客户端已经建立了连接,可在在棋盘上开始游戏了,黑棋先手,然后是白棋。如图6.9所示图6.9 双方下棋6.1.4 服务器界面设计由于服务器只是提供连接,界面设计以精简为主,提供了3个Button分别是“清楚显示”、“服务器状态”、“关闭服务器”,服务器界面如图6.10所示图6.10 服务器界面6.2 棋盘绘制6.2.1 Java图形编程基础Java中的Graphics类是用于绘图和显示格式化文本的工具类。在Java程序中绘图必须在一个窗口(容器)中进行,绘图窗体经常被设计为一个组件容器。一般首先在一个面板中进行绘制,

    41、然后再将这个面板添加到显示窗口中。Graphics类是在java.awt包中声明,显示格式化文本和绘图是通过调用Graphics类的drawXXX()方法实现的,例如drawString(String),drawLine()等。绘图采用的坐标系是原点在左上角,纵轴向下以像素为单位的坐标系。6.2.2 五子棋棋盘绘制通过paint类绘制棋盘drawLine(int int int int)方法为画一条直线,参数为起点的x和y坐标,终点的x和y坐标。fillOval(int int int int)方法为画填充卵形,参数为中心的x和y坐标,长轴,短轴。public void paint(Graph

    42、ics g) for (int i = 40; i = 380; i = i + 20) g.drawLine(40, i, 400, i);g.drawLine(40, 400, 400, 400);for (int j = 40; j = 380; j = j + 20) g.drawLine(j, 40, j, 400);g.drawLine(400, 40, 400, 400);g.fillOval(97, 97, 6, 6);g.fillOval(337, 97, 6, 6);g.fillOval(97, 337, 6, 6);g.fillOval(337, 337, 6, 6);g

    43、.fillOval(217, 217, 6, 6);6.3 连接Access数据库的实现连接数据库使用JDBC-ODBC桥接器要建立一个JDBC-ODBC桥接器:Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);该类通过调用静态方法forName加载sun.jdbc.odbc包中的JdbcOdbcDriver类来建立JDBC-ODBC桥接器。建立桥接器时可能会发生异常,因此要捕获这个异常。建立桥接器标准如下:Try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);Catch (ClassNotFoundExc

    44、eption e)然后是连接到数据库,首先使用java.sql包中的Connection类声明一个对象,然后再使用类DriverManager调用它的静态方法getConnection创建这个连接对象:Connection con=DriverManager.getConnection(“jdbc:odbc:sun”,“”,“”);建立连接时应捕获SQLException异常:Try Connection con=DriverManager.getConnection(“jdbc:odbc:sun”,“”,“”);Catch (SQLException e)这样就建立了到数据库user.mdb

    45、的连接。6.4 五子棋多线程的实现在Java中,用Thread类或子类创建线程对象。在编写Thread类的子类时,需要重写父类run()方法,其目的是规定线程的具体操作,否则线程就什么也不做,因为重写父类的run()方法没有任务操作语句。其部分代码如下(1)创建线程class clientThread extends Thread chessClient chessclient;clientThread(chessClient chessclient) this.chessclient = chessclient;(2)客户端线程对接收到的信息进行处理的函数如果接收到的信息以/userlist 开头,将其后的用户名提取出来,添加到输入信息Panel左边的用户列表中。StringTokenizer userToken = new StringTokenizer(recMessage, );int userNumber = 0;chessclient.userpad.userList.removeAll();chessclient.inputpad.userChoice.removeAll();chessclient.inputpad.userCho


    注意事项

    本文(基本于CS模式的五子棋网络对战游戏说明书.doc)为本站会员(星星)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922