毕业设计(论文)-五子棋游戏系统设计.doc_第1页
毕业设计(论文)-五子棋游戏系统设计.doc_第2页
毕业设计(论文)-五子棋游戏系统设计.doc_第3页
毕业设计(论文)-五子棋游戏系统设计.doc_第4页
毕业设计(论文)-五子棋游戏系统设计.doc_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

焦作大学毕业设计说明书 第 51 页 共 51 页 第一章 引言 现如今,游戏风靡于世界,具有上下五千年文明史的五子棋更具有其独特的魅力,融入了世界的潮流,并具有它的一席之地。它的棋文化源渊流长,即有东方的神秘,亦有西方的直观;既有“场”的概念,亦有“点”的连接。被人们所喜爱。那么,随着计算机技术的飞速发展,人们也不局限于与现实棋盘的较量,那么采用计算机技术与网络技术的虚拟棋盘也就应运而生,并得被人们所喜爱。1.1 五子棋的历史背景与现状 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“连珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。五子棋起源于古代中国,发展于日本,风靡于欧洲。对于它与围棋的关系有两种说法,一说早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。古代的五子棋的棋具与围棋相同,纵横各十七道。五子棋大约随围棋一起在我国南北朝时先后传入朝鲜、日本等地。据日本史料文献介绍,中国古代的五子棋是经由高丽(朝鲜半岛),于1688年至1704年的日本元禄时代传到日本的。到日本明治32年 (公元1899年),经过公开征名,“连珠”这一名称才被正式确定下来,取意于“日月如合壁,五星如连珠”。从此,连珠活动经过了不断的改良,主要是规则的变化(即对执黑棋一方的限制),本世纪初五子棋传入欧洲并迅速风靡全欧。通过一系列的变化,使五子棋这一简单的游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国际比赛棋。目前,职业连珠已迅速在国际上发展起来。 1988年8月8日,国际连珠联盟(RIF)由日本、俄罗斯、瑞典、亚美尼亚、阿塞拜疆、爱沙尼亚、法国、拉脱维亚、白俄罗斯等9个成员国在瑞典宣告创立,中国于1996年正式加入国际连珠联盟,现在全世界已有50个国家和地区成为国际连珠联盟的正式会员。职业连珠的世界锦标赛从1989年起每两年举办一次,现已举办了九届,爱沙尼亚、日本选手均获得过冠军。我国最好成绩是1999年北京第六届世锦赛张进宇获得的A组第9名,白涛获得的B组冠军,以及团体第七名。就水平而言,目前以爱沙尼亚、俄罗斯最强。职业连珠在中国经过十多年的发展,我国选手总体水平有了很大提高,尖子选手已跻身世界优秀选手行列,世界排名进入前50位。中国已拥有了一百多位国际段位棋手,他们肩负着新的历史使命,不断为中国五子棋爱好者提供立足国内、面向世界、一展才华的机会。我国于1998年8月成功地举办了第二届世界青少年锦标赛,1999年7月在北京举办了第六届世界锦标赛,2003年第一届连珠亚洲杯赛。在北京的带动下,全国其他地区也先后成立了五子棋组织。河北廊坊地区成立了廊坊五子棋协会;天津市成立了由天津市体委领导的天津市五子棋工作委员会;上海、镇江、武汉、云南等地也都相继成立了五子棋的组织。五子棋的发展在中国出现方兴未艾之势。总之,五子棋以它平易近人,老少皆宜的形式,引人入胜;扣人心魄的精彩棋艺对局,使这项运动受到越来越多人的喜好。不仅有业余爱好者,更有国际专家;不仅有民间的休闲娱乐,更有国际性的标准性比赛。预计在几年后,五子棋将成为国内最受欢迎的项目之一。在世界的影响也将越来越大。1.2 系统开发的意义系统的开发为人们提供对弈的虚拟平台,在系统中单机版,网络版集一个平台,其中单机版又有“人机对弈”与“人人对弈“,不仅满足了人们单人与机器对弈,而且满足了在一起的两个人或通过远程主机连在一起的人均可进行对弈,信息面板可以供网络板对弈的双方互相发送与接收信息,来进行聊天,探讨,并且还可以使用功能面板进行求和,悔棋,认输,黑白交换等功能,音乐也集成到了里面,所以系统的环境不仅很逼真,而且能够真正的供人们进行休闲娱乐,还能够为专家提供一个平台,供他们进行对弈及对深奥的技术进行探讨。 综上所述,此系统能为五子棋业余爱好者,专家提供面对面的或远程的虚拟性平台进行对弈与探讨。第二章 可行性研究与分析报告 本章研究分析系统的可行性,其中包括:一是,可行性研究的前提:说明系统的功能及要求等;二是根据研究的前提分析系统在技术上,社会上以及经济上是否可行等以及介绍以下开发工具的选择和数据库管理系统的选择。2.1 可行性研究的前提 此部分分析系统大概将要实现那些功能,以及对系统有那些要求。2.1.1 系统的功能初步分析本系统应实现下棋的一些基本功能:应具有悔棋,能够判断五子棋的一些基本规则,禁手,先手等。网络版还应能实现玩家双方进行发送与接收信息,能够查询对弈双方的基本信息,当玩家离开是服务器应能通知其他玩家等。单机版人机对弈应该能实现机器的智能下棋。单机版人人对弈应该在开始游戏之前要求玩家双方输入自己的姓名,系统能够判断谁胜谁败等。2.1.2 系统的要求根据五子棋的基本功能以及实际需要本系统应能满足以下要求:系统的运行应具有很高的跨平台性,即在很多不同的操作系统下能够正常运行;较高的可靠性,系统出错或异常是能够抛出异常,继续其它的工作;界面应该逼真,友好;对与玩家应具有公平公正性,即一方下过之后,他处于等待状态,另一方下棋,并且能够正确的判断哪方胜哪方输,双方应具有相同的功能;一方要悔棋,必须得到另一方的同意,若对方不同意不得悔棋等要求。2.2 系统的可行性分析 该部分主要根据系统的功能和要求分析该系统在技术,经济及社会上是否可行。其具体分析如下:2.2.1 技术可行性分析 技术可行性分析主要包括四个方面:目前有关的技术能否支持所开发的新系统;新系统开发人员的数量和水平,即人力资源;硬件和软件资源。 根据前面的要求和功能可知系统所需要的主要技术有:网络技术。据统计目前的网络技术完全可以满足系统的需要。在开发人员的水平上:开发者曾深入学过Visual Basic 6.0,NetBean IDE 6.1,SQLServer 2000。但是由一个人在一个月内完成以上功能上仍具有一定的风险,需要有计划,有方法,选择适当的模型和开发语言以及开发环境方可完成以上要求。 在硬件和软件上要求不多,只要系统中装有JVM(JAVA 虚拟机)均可,对于操作系统只要支持Java的均可。服务器的要求:操作系统支持Java,装有SQL Server 2000均可。 综上所述,根据现有的技术开发者可以在规定的时间里完成系统的功能及要求。2.22 经济可行性分析经济可行性分析主要是对开发新系统所投入的资金与系统投入使用后所带来的经济效益进行比较,确认新系统是否会给企业带来一定的经济效益。根据以上分析开发者需要投入的有:电脑,开发环境,数据库。在网上可以直接下载到,开发者原先就有电脑,再加上此系统有开发者自行开发,不需要更多的直接投入,所以说直接投入几乎为零。据与五子棋的有关资料表明,五子棋将来会被越来越多的人喜爱,虚拟平台也将会被越来越多的人所接受,因此,本系统将会被越来越多的人所使用,有很大的潜在价值。综上所述,本系统在经济上是可行的,即投入/收益比是可行的。2.2.2 社会可行性分析 社会可行性分析主要是指管理信息系统的开发是否符合国家法律、政策,是否能够与社会大系统实现良好的对接。分析本系统的功能和要求并没有与有关的国家法律,政策相违背。并且它是顺应社会的发展而产生的东西,更是根据人们的愿望所开发的系统,符合人们的需要及社会的要求。所以说,此系统在社会可行性上是可行的。综上所述,开发者完全可以开发本系统。2.3 开发工具的选择系统开发肯定离不开开发工具,当然本系统也是,但是,现在市场上开发软件众多,到底用哪一种呢?这需要,从系统本身出发,根据系统的功能和要求及其他发面来综合的选择!在为系统选择正确的开发语言之前之前先纠正一个错误。大多数人认为名声最大最流行的软件总是好的,这种观点是错误的。它流行是应为它用的多与好不好没关系。其实,每种开发语言,都有它自己的独特之处,都有自己擅长的方面,不能一概而论。现在,市场上的开发语言数不胜数。下面说一下比较流行的几个。Microsoft公司的Visual Basic,它主要用于一些数据库管理系统的开发,因为它与数据库的接口比较容易,并且内置有许多与数据库有关的控件,如:ADODC,DATAGRID控件以及一些报表控件等,非常好用。另外,它的可视化界面,有助于原型化的开发方法,适合于桌面系统的开发。由于,其运行效率较低,近几年市场占有率逐渐下降。Microsoft公司的Visual C与Microsoft公司的Visual C+,C语言基本上大家都知道,也是大学里相关专业的必修课程,它是一种面向过程的通用性语言。C+是C语言的升级版本,是标准的面向对象的软件开发语言。它适用于桌面系统的开发,在市场上有较高的占有率。关于它的详细信息我不是很了解。网上有许多关于它的信息。Sun 公司的JAVA软件开发语言,它是一种近几年发展起来的标准的面向对象语言,它的发展速度特别快,据有关统计它的市场占有率已经超过了其它语言。本系统也采用了这个语言。究其原因有以下几个方面:简单性。它消除了C+的指针,运算符的重载,类的多继承等难一理解的内容,同时它的编译器很小便于在各种类型的计算机上实现。分布式。它是不仅是一种面向对象的语言,支持代码重用,而且他还是一种面向网络的语言,是Internet上的通用语言,这也是本系统使用它的重要原因之一。安全性与健壮性。它有多个阶层的互锁保护措施,能够有效的防止病毒的入侵和蓄意破坏行为。并且,它的内部有异常处理机制,即使当程序某些地方出现错误时,程序会自动抛出异常,保证程序的运行。可移植性。Java有很好的平台移植性,主要得益于它与平台无关的特性,同时Java的整个系统都具有可移植性。这点,也是此系统选择它开发的主要原因之一。解释性语言和高效性。Java是一种先编译后解释性的语言。先编译成class文件,然后,有Java虚拟机(JVM)去解释执行它。这也是它有很高移植性的原因之一。多线程机制。线程是近几年发展起来的新概念,它是进线程更小的能独立运行的单元,是进程的一部分。这个机制提高了程序的执行效率和处理能力。这也是本系统的采用Java开发的主要原因之一。综上所述,Java语言,非常适合于本系统的开发,特别是它的分布式,移植性高,多线程的机制,就像为开发此系统量身定做的一样。2.4 数据库管理系统的选择此系统对数据库的选择不是很重要,但是必须的。因为此系统不是管理系统,而是一种小游戏。但是,网络版服务器需要记录玩家的信息,并长期保存,供玩家查询,所以,数据库是必须的。对数据库的选择也很重要。首先,他要支持分布式。当然,开发者必须熟悉这个数据库。在这里对数据库就不做过多介绍了,此系统选择的数据库管理系统是:SQL Server 2000数据库管理系统。第三章 需求分析在需求分析阶段主要通过仔细调查准确掌握每一个用户对数据库的要求以及系统所要求的功能(系统做什么),提供后续设计阶段所需的一些内容,主要涉及应用环境分析、数据流程分析、数据需求的收集与分析等。需求分析是整个设计过程的基础,是最困难、最耗损时间的一步,其准确与否将直接影响后续各个设计阶段。最终将影响到设计结果是否合理和实用。用户对数据库的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构,以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。系统开发的总体任务是实现五子棋的单机版,网络版,其中单机版又分“人机对弈”和”人人对弈“。需求分析是在系统开发总体任务的基础上完成的,设计数据库系统时应该充分了解用户的各方面的需求,包括目前及将来可能拓展的需求态势。因而数据库结构势必要充分满足各种信息的输入和输出。据此,可归结出此系统所需完成的主体任务。主要任务如下: 单机版人机对弈,此部分需要实现人与机器能够很好的对弈,黑子先下,黑白棋子轮换下棋。其中应该有,悔棋,求和,认输,黑白交换等功能,在游戏开始前其以上功能不可用,在游戏开始后,玩家单击任意一个功能电脑都要接受。最好,还有一些愉悦的功能,如:音乐等。要求电脑智能性要强。 单机版人人对弈,此部分要实现人与人进行公平的对弈,同样,黑子先下,然后黑白棋子交替出现。在这里也应该有,悔棋,求和,认输,黑白交换等功能。在游戏开始后,一方单击其中一个功能必须等待对方的回应,如果对方不同意,则功能不会执行。在开始游戏之前,玩家双方必须输入自己的姓名,否则无法开始游戏。 网络版,在此部分中,玩家需要用自己的帐号登录,方能玩游戏。玩家需要注册自己的个人基本信息(昵称,性别,密码,邮件等),完毕后,由服务器保存用户信息。同时,存在的玩家还可以修改自己的基本信息,修改完毕后由服务器保存。玩家在结束游戏后系统应该能识别出哪方胜哪方输,然后给胜的一方加十分,输的一方减十分,保存到服务器。在游戏开始前后玩家都可以查询对家的个人信息(帐号,昵称,性别,得分,胜局数,负局数,获胜率),同时,玩家双方还能够进行发送与接收信息。一方单击悔棋,求和,认输等功能时,要得到对方的同意系统方可执行此功能,否则,继续下棋。在游戏开始后,一方下完要等待另一方下完才能下下一着。双放的棋盘状况应该完全一样。3.1 五子棋网络版系统的总体功能用例图模型 包含 包含 包含登录注册修改信息查询信息发送信息下棋玩家图3.1 网络玩家游戏功能用例图3.2 单机版人机对弈系统的总体功能用例图模型 包含 包含 包含 包含悔棋求和认输黑白交换开始电脑选棋音乐玩家图 3.2 人机对弈玩家功能用例图3.3 单机版人人对弈系统的总体功能用例图模型 包含 包含 包含 包含 包含输入姓名黑白交换开始悔棋求和认输音乐玩家图3.3 人人对弈玩家功能用例图3.4 相关用例的活动图模型(1)网络玩家登录路径 此活动图介绍“网络版”玩家在登录窗体所能进行的操作,及其进行操作的先后顺序,同时也表现出了其功能。粗黑的横线为同步图,说明在同一行的操作,可以不分先后进行操作。总体操作是按由上自下顺序操作。 登录进入游戏大厅登录失败取消登录成功登录 图3.4 玩家登录路径 (2) 单机版人机对弈玩家的操作路径 此活动图介绍“单击版人机对弈”玩家进入游戏主窗体及游戏开始后玩家所能进行的操作,及其进行操作的先后顺序,同时也表现出了其功能。粗黑的横线为同步图,说明在同一行的操作,可以不分先后进行操作。总体操作是按由上自下顺序操作。开始游戏播放音乐电脑选棋设置级别悔棋求和认输黑白交换悔棋继续下直到游戏结束停止播放直到游戏结束图3.5 人机对弈玩家操作路径(3)网络玩家进入游戏主界面后的操作路径此活动图介绍“网络版”玩家由游戏大厅进入游戏主窗体后玩家所能进行的操作,及其进行操作的先后顺序,同时也表现出了其功能。粗黑的横线为同步图,说明在同一行的操作,可以不分先后进行操作。总体操作是按由上自下顺序操作。播放音乐发送信息查询信息显示记录玩家信息对家信息显示记录停止播放发送完毕 图3.6 网络玩家进入游戏后的操作路径(4) 网络玩家游戏开始后的操作路径此活动图介绍“网络版”玩家在游戏开始后所能进行的操作,及其进行操作的先后顺序,同时也表现出了其功能。粗黑的横线为同步图,说明在同一行的操作,可以不分先后进行操作。总体操作是按由上自下顺序操作。开始游戏悔棋 求和认输黑白交换对家不同意对家同意对家不同意对家同意按原先下棋改后再下按原先下棋游戏结束直到游戏结束 图3.7 网络玩家在游戏开始后的操作路径(5)单击版人人对弈玩家进入游戏主界面后的操作路径此活动图介绍“单机版人人对弈”玩家在进入游戏主界面及游戏开始后所能进行的操作,及其进行操作的先后顺序,同时也表现出了其功能。粗黑的横线为同步图,说明在同一行的操作,可以不分先后进行操作。总体操作是按由上自下顺序操作。播放音乐设置玩家姓名姓名不空姓名为空开始游戏悔棋黑白交换 求和认输对家不同意对家同意对家不同意对家同意按原先下棋改后再下按原先下棋游戏结束改后再下停止播放重新设置 图3.8 人人对弈玩家进入游戏界面后的操作路径3.5 系统的静态模型对象类型根据上面的需求分析说明,可以标识出以下类:玩家(用户),棋子(黑白棋子),棋盘,服务器,电脑,音乐。根据实际需要及以上标识出的类可以得出目前此系统需要的类:用户,棋子,棋盘,服务器,音乐,修改信息窗口,注册用户窗口,登录窗口,游戏大厅,机器(电脑),玩家,五子棋。其中,用户是永久存储的类,即存储用户信息。表3-1 目前得到的系统对象类序号 类名中文含义 功能描述 1grb个人信息表存储用户的基本信息 2DLframe登录窗体用于用户登录的方式(单击,网络) 3DTFrame游戏大厅网络玩家用此进入游戏主界面 4ZCframe注册窗体用于注册新用户 5UpdateFrame修改信息用于用户修改个人基本信息 6Robot机器用于人机对弈电脑下棋 7Qizi棋子放在棋盘上的黑白棋子 8HeiZi黑棋子放在棋盘上的黑子 9BaiZi白棋子放在棋盘上的白子 10WuZiServer服务器用于监视用户及响应用户的请求 11Music音乐用于播放背景音乐 12WuZiQi五子棋系统初始化类 13People玩家玩家下棋 14NetPeople网络玩家用于网络版玩家下棋 15Pepple_Robot人机对弈玩家用于单机版人机对弈 16People_DJ人人对弈玩家用于人与人对弈 17QiPanPane棋盘用于摆放黑白棋子grb帐号昵称性别密码邮件得分WuZiServer监视窗体DLframe帐号密码socketInoutZCframe密码昵称邮件性别socketInoutUpdateFrame帐号旧密码新密码新昵称新性别新邮箱socketInoutDTFramesocketInoutWuZiQi登录 QiZiHeiZiBaiZiQiPanPanePeopleNetPeoplePeople_RobotPeople_DJRobot Music名字泛化泛化泛化泛化图3.9 目前类图的层次及关联3.6 目前系统的实物或事件列表事件对象动作响应网络登录玩家单击“登录”按钮密码正确进入游戏大厅否则重新登录单击登录玩家单击“登录”按钮弹出游戏主界面退出玩家单击“退出”按钮退出系统注册玩家单击“注册”按钮弹出注册窗口修改信息玩家单击“修改”按钮弹出修改信息窗口(1)登录窗体的事件列表表3-2 目前登录窗体的事件列表(2)注册窗体的事件列表表3-3 目前注册窗体的事件列表 事件对象动作响应提交信息玩家单击”提交“按钮若成功返回帐号否则需从新填写信息返回玩家单击“返回“按钮返回登录窗体(3)修改信息窗口事件列表表3-4目前修改窗体的事件列表事件对象动作响应修改信息玩家单击“提交修改“若成功返回修改成功否则修改失败返回玩家单击“返回“返回登录窗体(4)游戏主窗体的事件列表表3-5目前游戏主窗体的事件列表事件对象动作响应播放音乐玩家单击“音乐“菜单开始播放音乐停止播放玩家单击“音乐”菜单停止播放音乐玩家姓名玩家单击“玩家姓名”弹出输入玩家姓名窗体设置级别玩家单击“设置级别”能够设置电脑的级别(初,中,高级)电脑选棋玩家单击“电脑选棋”单击电脑执白则电脑执白子否则执黑悔棋玩家单击“悔棋”若是人机对弈则悔棋否则需对家同意求和玩家单击“求和”若是人机对弈则和棋否则需对家同意认输玩家单击“认输”若是人机对弈则结束否则需对家同意黑白交换玩家单击“黑白交换”若是人机对弈则换子否则需对家同意发送信息玩家单击“发送信息“网络玩家向对方发信息,同时显示此信息在文本区查询信息玩家单击列表框中的玩家或对家若查询玩家信息会弹出玩家信息窗体,若查询对家(存在)会弹出对家信息开始游戏玩家单击“开始“游戏开始下子玩家单击“棋盘“在棋盘上会显示玩家所下的棋子3.7 系统研究方法此系统是按软件工程的方法学进行开发的。开发周期是按可行性研究,需求分析,系统设计,系统实现,测试进行开发的。由于面向对象个阶段之间没有明显的界限,所以系统的概要设计与详细设计放在了一起。需求分析阶段主要分析系统需要做什么,而不要求如何做。开发者根据在网上提供的资料来完成的系统分析。有些需求还不明确,因此此系统采用的是快速原型的开发模型。系统设计阶段主要分析系统具体是如何实现的。是需求的实现及细化,确定具体实现的算法及思想等。系统实现是根据系统设计阶段来实现系统,编码及单元测试工作。测试阶段是对开发的系统进行集成测试,验证测试及系统测试。来验证系统是否能正常运行,系统所实现的功能是否满足需求规格说明书需求功能以及系统是否满足用户的要求,比如:响应时间,运行环境,可移植性,易操作性等。此系统开发的方法是面向对象方法,采用的模型是迭代模型加快速原型模型。面向对象能支持代码重用等优势,快速原型模型能快速的开发出用户界面给用户评价修改,获取更可靠的需求。其快速原型模型示意图如下:需求分析原型开发原型评价最终系统设计最终系统实现图3.10 快速原型模型第四章 系统总体设计此阶段是设计系统所具有的总的对象类,及对用户的控制和对异常情况的控制。此阶段包括:概要设计和详细设计。概要设计划分系统所具有的总的类,及其设计的动态视图和数据库的设计。详细设计阶段是对每个类内部的详细设计思想及算法的描述。经过迭代反复的测验及利用快速原型模型的反复修改,五子棋系统对玩家及其每个功能的限制与相对于需求分析阶段所扩展的功能如下所述: 玩家登录窗体:玩家登录是必须选择单选钮是单机版还是网路版,系统默认是单机版。若是单机版玩家登录帐号,密码,注册及修改信息按钮不可用,玩家单击登录直接转到游戏主界面。如果是网络版,玩家必须输入自己申请的帐号和相应的密码方可登录,若密码错误或帐号不存在则禁止用户登录,并弹出错误对话框来警告玩家。 游戏大厅:在游戏大厅中必须有监视线程,来获取服务器发来的信息,判断是否有新的玩家来,若有则设置相应的位置不可用。 注册:用户必须正确填写玩家信息,若填写信息有误或填写信息不符合要求,则禁止用户注册,并弹出错误提示,比如:两次输入的密码不同,没有填写玩家昵称等。规定:用户昵称长度为610个字符,密码为6个字符,两次输入密码必须相同,所有信息必须填写。若注册成功服务器会自动生成玩家帐号,并返回给用户,同存储玩家信息。 修改信息:玩家必须输入自己的帐号和密码,若用户存在即帐号和密码正确才能修改,用户需填写要修改的全部信息才能修改。填写完毕后提交给服务器,由服务器更新数据库。 游戏主界面:若是“单机版“设置网络版菜单项,发送按钮及文本框不可用;“单机版人人对弈”设置级别,电脑选棋菜单项不可;”单机版人机对弈“设置姓名菜单项不可用;”网络版“设置单机版,电脑选棋,级别菜单不可用。 棋盘标记:玩家在棋盘上移动鼠标时,在离鼠标指针最近的棋盘十字交叉线上有红色方框标记。对于棋子,在玩家下完一个棋子后在棋子上面有红色十字交叉线标记,上一个棋子上的红色十字交叉线也要立即消失。4.1 玩家登录系统的总体活动图模型玩家选择版本游戏主界面游戏大厅注册修改信息游戏主界面单机版网络版登录登录退出修改玩家信息窗体注册窗体密码正确密码错误重新登录 图4.1 玩家登录系统的操作总路径4.2 概要设计此阶段主要说明系统具体的要做什么以及如何去实现。下面紧接着要说明所有的对象类。4.2.1 系统中所有的对象类经过无数次的迭代,以及对快速原型的修改扩展了原来需求分析中的类以及消除了一些类。到现在系统中的对象类已经完整,其对象类如下:服务器中的类列表如下:表4-1 服务器中的类的列表序号类名中文含义功能描述 1frame_ser服务器窗体服务器运行是显示的窗体 2DeskZu卓号数组用于记录客户端游戏大厅的每一个桌子的信息 3Information信息存储桌子的信息 4InitInformation初始化信息初始化每个桌子的信息 5Thread_serJS0监视客户线程0监视是否有玩家上线,若有则通知其他线程 6Thread_serJS监视客户线程监视是否有玩家下线,若有则通知其他线程 7Thread_ser0玩家注册线程0若有玩家注册则创建“Thread_ser”线程 8Thread_ser玩家注册线程向数据库添加用户,并产生用户帐号,发送到客户端 9Thread_serDT0监视大厅线程0若有玩家到游戏大厅则创建“Thread_serDT”线程 10Thread_serDT监视大厅线程接收并记录客户端发送过来的玩家及桌子信息并记录到“信息”里面 11Thread_serDL0玩家登录线程0监视是否有玩家登录若有则创建“Thread_serDL”线程 12Thread_serDL玩家登录线程0接收用户发来的帐号和密码,并查询是否有此玩家,若有则发送登录成功标记,否则发送失败标记 13SelectYongHu0查询用户信息线程0若监视到有玩家要查询信息则创建“SelectYongHu”线程 14SelectYongHu查询用户信息线程根据客户端发来的帐号查询用户的基本信息,并发送到客户端 15Thread_UpdateScore0更新用户得分线程0若监视到玩家要求更新得分则创建“Thread_UpdateScore”线程 16Thread_UpdateScore更新玩家得分线程根据客户端发送过来的帐号和要添加的分数更新数据库 17Thread_UpdateXinXi0更新玩家信息线程0若监视到有玩家要求修改信息则创建“Thread_UpdateXinXi”线程 18Thread_UpdateXinXi更新玩家信息线程根据客户端发来的帐号和密码看用户是否存在,若存在则修改数据库相应玩家信息,并发送修改成功标志,否则发送失败标志 19Server服务器初始化服务器及其他线程类客户端中的对象类表4-2客户端类的列表序号类名中文含义功能描述1DLframe登录窗体用于玩家网络版与单机版的选择,以及进入游戏大厅,注册窗体,修改玩家信息窗体 2ZCframe注册窗体用于注册新的玩家 3UpdateFrame修改玩家信息窗体用于修改玩家的信息 4DTFrame游戏大厅窗体用于网络玩家进入游戏主界面 5 Threadser服务线程用于获取对家的IP地址,和对家的帐号 6ThreadJianTing监听线程监听服务器是否发来有新的玩家或离开的玩家,若有则设置相应的按钮的状态 7Gameframe游戏窗体用于设置游戏的环境 8Sound声音用于读取音乐文件 9QiPanPane棋盘面板用于放置棋子,棋盘及结束文字 10People网络玩家用于网络玩家下下一着及游戏结束后更新玩家得分 11Function功能线程用于网络玩家悔棋,求和,认输,黑白棋子交换功能 12Robot及其(电脑)用于电脑下下一着的算法及判断游戏是否结束 13ZuoBiao坐标(棋盘鼠标)存放鼠标在棋盘上的坐标 14WuZiQi五子棋初始化登录窗体4.2.2 数据库的设计数据库存储玩家的基本信息帐号,昵称,性别,邮件,得分,胜局数,负局数,或胜率。此数据库只有一个表grb,主要用于玩家查询,修改,注册帐号(添加用户),所以应使用聚集型的,能提高查询效率。各个字段的数据类型,初始值,数据长度,是否可为空,备注详细情况请看下面的列表。先看一下数据字典关于各个字段的定义:帐号:用于标识一个用户。昵称:是用户在玩游戏是的名字,即网络名。性别:用户的性别。邮件:玩家使用的电子邮件,即邮箱。得分:玩家从开始玩游戏到目前的总得分,也标识着用户的水平。胜局数:玩家从开始玩游戏到目前的赢的总局数。负局数:玩家从开始玩游戏到目前的输的总局数。获胜率:胜局数与玩家下的总局数(胜局数+负局数)的比值。表4-3 数据库grb表的字段详细情况字段数据类型数据长度初始值是否可空备注帐号char6否主键昵称char10是性别char2是密码char6是邮件char30是得分int40否胜局数int40否负局数int40否或胜率float80.0否4.2.3 系统的主要动态视图模型交互图 交互图是一种环境模型视图,表示系统的环境结构和行为这种图描述系统对象之间的交互关系,有序列图和协作图。顺序图描述对象之间的动态的交互关系,着重体现对象间消息传递的时间顺序。顺序图有两个轴,水平轴表示不同的对象,垂直轴表示时间。顺序图中的对象用一个带虚线的矩形框表示,并标有对象名和类名。垂直虚线是对象的生命线用于表示对象在某段时间内存在。对象间的通信通过在对象生命线间画消息来表示。消息的箭头指明消息的去处。 协作图描述对象的动态协作关系,它显示对象之间发送消息和它们的关系。下面主要用顺序图来说明对象之间的消息传递。(1)网络玩家单击登录时及进入游戏大厅时的时序图DLframeServer单击登录out.write(ZH);out.write(MM)OkActionPerformed()thread.start()out.write(flag)玩家登录失败DTFramecreate()dispose()单击桌面按钮jbuttonActionperformed()out.write(ZZH)out.write(ANH);Gameframecreate()图4.2 网络玩家单击登录及进入游戏大厅后的时序图(2)用户注册时的时序图 用户点击网络版单选按钮后单击“注册”按钮进入“注册窗体”。在“注册窗体”中用户必须按窗体上的要求填写信息,单击“提交”之后方能注册成为新用户,并获取用户帐号。其时序图如图4.4.2所示:ZCframeServer玩家单击提交判断信息是否符合要求信息不合要求发送正确的用户信息zhanghao()修改数据库发送用户帐号显示用户帐号返回DLframecreate()dispse()图4.3 用户注册时的时序图(3)用户修改信息时的时序图 用户点击网络版单选按钮后单击“修改信息”按钮进入“修改信息窗体”。在“修改信息窗体”中用户必须按窗体上的要求填写信息,单击“提交修改”按钮把信息发送到服务器,服务器首先查找此用户,若找到则修改此信息并返回“修改成功”等类似文字,否则返回“未找到此用户不等修改”等类似文字,由客户端显示给用户。其时序图如图4.4.3所示:UpdateFrameServer玩家单击修改信息判断信息是否符合要求信息不合要求发送正确的用户信息判断用户是否存在用户不存在显示用户不存在修改用户信息修改成功显示修改成功单击返回登录DLframecreate()dispose()图4.4 用户修改信息时序图4.2.4 概要设计总述到目前为止概要设计已经基本完成,总的来说此阶段完成了系统所需的完整信息,是一个从系统要求做什么到如何去做的一个过渡阶段,是一个必不可少的阶段。接下来要进入到系统详细设计阶段。4.3 详细设计 详细设计阶段要求对系统中的每个类的算法,函数以及所采用的思想进行详细的说明与设计,只要以上阶段完成的比较理想,此阶段不是太难,但是仍不能大意,因为它对系统的实现阶段,即最终的系统影响很大。4.3.1 服务器对象类 服务器类是先于客户端运行的,响应客户端的请求。本系统所采用的通信模型如下图所示:服务器客户端1客户端2发送信息发送信息请求信息响应信息请求信息图4.5 服务器与客户端及客户端间的通信模型下面说说通信模型的具体思想: 玩家登录客户端,向服务器发送信息,比如:登录请求,服务器进行接收信息,并查找数据库,然后响应用户是否登录成功。客户端1向服务器请求客户端2的IP地址,同样,客户端2也可以向服务器请求客户端1的IP地址。客户端都获取了对方的IP地址,然后,就可以互相通信了。服务器对象类的设计思想如下: 服务器的总体流程图如下所示: 启动服务器监听线程0启动大厅线程0启动登录线程0启动注册线程0启动修改信息线程0启动更新得分线程0启动查找信息线程0启动服务器窗体显示有新玩家来或离开启动监听线程有玩家来大厅启动大厅线程有玩家登录启动登录线程有新用户注册启动注册线程有用户修改信息启动修改信息线程有用户修改得分启动更新得分线程有用户查询信息启动查询信息线程图4.6 Server的总流程服务器对象类用到的主要语句: (1)建立数据库桥接器 try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException e) System.out.println(DLjdbc-odbc桥接器失败); (2)连接数据源 try con = DriverManager.getConnection(jdbc:odbc:ljm_wzq, , ); catch (SQLException e) System.out.println(DL连接数据源失败); (3)打开数据库 Statement sql = con.createStatement(); (4)数据库的操作 查询:ResultSet rs=sql.executeQuery(String s); 添加记录:sql.execute(String s); 修改记录:sql.executeUpdate(String s); (5)服务器套接字的建立 try ServerSocket ser = new ServerSocket(端口号); Socket socket = new Socket(服务器IP, 端口号); catch (Exception e) System.out.println(正在监听.); (6)套接字输入输出流的建立 try in = new DataInputStream(socket.getInputStream(); out = new DataOutputStream(socket.getOutputStream(); catch (IOException e) (7)输入输出流读写数据 try in.readUTF(); out.write(String s); catch (IOException e) 到这里服务器的详细设计就完成了,具体的编程请参看代码文档。4.3.2 客户端对象类此类是在客户端运行的应用程序。其主要思想是智能以及一些其他的控制,如:先下黑子,后下白子,然后黑白交替下子。AI(智能)的具体设计思想(Robot类) 初级思想: 一 先求五子棋的获胜组合(五个相邻的格子为一个组合) 在一场五子棋的游戏中,计算机必须要知道有那些的获胜组合,因此我们必须求得获胜组合的总数,在任何一种组合中只要存在两种颜色的棋子,那么这种组合都没有获胜的可能,计算机不予 考虑下子。标准棋盘为15*15。 (1) 计算水平方向的获胜组合数,每一列的获胜组合是:11,共15列,所以水平方向的获胜组合数为:11*15=165。 (2)

温馨提示

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

评论

0/150

提交评论