网络五子棋的设计与实现(编辑修改稿)内容摘要:

需要改变供应商,则您在应用开发技术上面的投资仍能继续发挥作用,而丝毫不用为其担心。 另外, JBuilder 以强大的支持与服务基础架构为依托,这有助于确保您的成功。 成功地利用现有的项目并管理变更 保护您的未来,利用您的过去。 JBuilder 技术传承 Borland 帮助企业发挥已有 IT 投资更大作用的承诺,用于在企业 Java 应用程序的开发过程中,继续利用现有的技术资源。 JBuilder 技术对领先的业界标准与从 UML 到极端编程的全部开发方法提供广泛的支持,提供了一个灵活的平台, 可以进行充分的扩展,以便满足复杂的 Java 企业开发环境不断变化的需要。 使用可靠的工具集成,专注于开发 JBuilder 开发环境可让开发者使用从设计、开发、调试与测试直到分发与管理的应用程序开发生命周期的全部阶段。 JBuilder 企业版包括了 Borland Optimizeit Suite 套件性能工具,用以在全部开发过程中打造质量。 与 Borland 的 Java 应用生命周期解决方案的其他部件集成在一起,这意味着开发小组可以专注于生成更好的应用程序,而不是想方设法让各种工具协同工作。 JBuilder 进 一步提高实时可视性,让开发者一眼看清源码变更对应用的不同层次甚至整个项目的影响。 这对于把软件开发变革成可管理及成功业务流程至为关键。 如下图 第二章 开发工具 、 环境及其技术 12 图 27 JBuilder开发界面 JBuilder 与 Borland Together 建模技术的结合,有助于 JBuilder 用户更好地理解代码结构,管理项目的复杂程度。 JBuilder 与 Borland StarTeam 自动化配置并变更管理系统一起使用,可以在全部开发周期中提高对项目的掌握程度。 与著名的 Borland JDataStore 数据 库与Borland 企业服务器进行集成,有助于您信心十足地进行分发。 JBuilder 也与其他业界领先的版本控制系统与分发平台集成在一起,提供了平台的灵活性与选择的自由。 网络五子棋游戏毕业论文 13 第三章 程序设计开发 .界面设计 给一个游戏,我们首先想到的是游戏的界面,所以一个清晰美观的界面可以让别人对我们所设计出来的游戏产生好感,一开始考虑界面的设计,界面包括,棋盘,也就是棋子绘制的范围,然后下棋的时候有一些信息,比如说网络对弈时,对方的名字, IP 等要能够看到的话就该把它显示出来,所以还要一个 显示这些信息的界面,另外,也是在网络游戏时,要输入 IP,姓名的信息,还要一个连接服务器(客户端端)或者是开启服务器(服务器端)的按钮。 这些控制的组建应该放在一起,一开始考虑把他们放在一个面板里面,处理这些信息只要对这一个面板进行操作就可以了,但是如果这样的话可以想像,当你计算棋子所字范围的时候还要考虑到消息面板所占的空间,还有那些控制面板的空间,而且放在一起是也不好摆放,他们的背景颜色,等一些属性都是一样的,那样给人的感觉也不大美观。 放在一起主要原因是对他们超做不方便,对上面每一个组建进行操作都可能影响 到其他的内容,显示情况等等。 从面向对象的角度来看,这也不符合,都放在一起,那些东西都在一个类里面,他们还可以划分成其他的类,而这里用的是JAVA 对该游戏进行开发,所以每一个类都要单一,所以把界面分成三个部分:一个是棋盘类,也是主要的类,一个是消息面板的类,还有一个就是控制面板的类。 这样一来,我们就可以对他们进行单独的操作了,而且组织他们也比较方便,我们可以根据自己的风格,自己的喜好来组织他们,把整个界面做的美观清晰。 而且对他们进行操作也不影响其他组件。 把对棋盘界面设计好了,我们就应该考虑棋子了,棋子怎样 画出来,怎样才能让棋子按我们所想的方式来绘制出来呢。 我们就想,肯定是每次当点击鼠标的时候就在点击鼠标的地方画一个棋子,所以我们还得定义一个棋子的类来对我们点击鼠标时把棋子绘制出来。 这样我们就差不多把棋的界面棋子就确定了,而且也确定了几个我们所需要的类。 我们就可以先定义好这些类了。 界面设计出来之第三章 程序设计开发 14 后我们就会想,有了界面,我们怎样控制棋子在棋盘上进行下棋呢。 尤其是单机游戏时,怎样让你在棋盘上下棋之后就让计算机自己下棋呢,如果能下棋,又怎样让计算机计算出在什么位置下呢 „„ 这样的话就是算法设计了 有了以上的准备就可 以把棋盘绘制出来了,然后就是下棋了,如果是单机游戏,每次在适当位置点击鼠标的时候就在所点击的位置上画出你这个角色的颜色,在绘制出你下棋位置的棋之后你所希望看到的是计算机下棋了,也就是说在你下完棋之后就是计算机自动的下了,计算机要自己选择一个合适的位置来下棋,也就是说每次自己下完棋之后就要有一个控制变量来控制自能不能下棋,如自己下了棋而计算机还没下棋的话那就得让自己不能下棋就是说点击鼠标没用(当然这种情况是不可能的,因为计算机计算的速度很快,所以一般人下完棋后计算机就马上绘制出了所须下的棋子,只是为了说明在网 络对弈时候该这样控制)。 人可以随意的下子,可是计算机就要计算在那个位置下子了。 这里由计算机下子的算法来确定,对弈的话就不象单机游戏一样,要计算机来判断人下子之后计算机下那一个地方了,对弈只要在双方下子的时候判断赢棋情况,当然还要同步的控制两个人下棋的顺序,这样的话就要用到线程了,各自都继承或实现线程类或接口,以便各自能随时单独控制接发消息。 服务器端和客户端之间的流程是这样的,首先在服务器断开启自定义的端口来监听客户端的请求,若有请求则建立连接,否则处于等待状态,建立连接通信后,服务器端和客户端都创建独立的 线程来处理信息的发送接收方法,信息包括:玩家的姓名,下的棋子的颜色,位置等。 信息发送和接收依靠网络流来传递。 在网络对战的设计上,游戏系统由服务器端和客户端构成,形成点对点模式的连接和通信,在服务器端建立主机,输入己方的名字,在客户端连接的状态下可以互通信息,显示服务器的状态,即服务器和客户端的连接情况,在客户端需要输入服务器端主机的 IP、端口、姓名、在连接状态下可以与服务器通信,还可以显示当前状态。 .算法设计 这里算法的设计主要是讲单机的算法,包括确定计算机下棋的位置和判断赢棋的情况 网络五子棋游戏毕业论文 15 先考虑一下整个棋盘上五子连的情况,也就是说在整个棋盘上有多少种情况能构成五子连,这里定义的是一个 15*15 的棋盘,如下图 图 31 棋盘上五子连情况 有四种方式的五子连,横的、竖的、右斜、左斜,横的情况有 15*11 种,竖的有15*11 种,右斜有 11*11 种,左斜有 11*11 种,总共是 572 种,并且对每中情况按顺序进行标号,如点( 1)可以属于第 1 种,第 165 种(从第 0 种开始),第331 种,点( 2)可以属于地 1 种,第 2 种,第 157 种,第 332 种。 定义 两个三维数组 caseBlack[15][15][572], caseWhite[15][15][572]分别用来存放白棋和黑棋各个点的情况,前面两维存放的是某个点的坐标,第三维放的是他们所属于的情况,并把这个数组定义成 boolean 类型的。 也就是说如果这个点是这种情况的话就为 true 况的就为 false。 定义一个二维数组 colorFive[2][572],这个数组存放的是白子和黑子在每种情况是棋子的个数,如 colorFive[0][2]=3,就代表黑棋在第二种五子连情况的个数是 3,这个数组就纪录了黑棋和白棋每种 五子连情况上的个数,可以用这个数组来确定有没有赢棋的情况。 在每下一个棋子的时候,先遍历这个点属于那些情况,再在每种情况上的 colorFive 对应的位置第三章 程序设计开发 16 加上 1,定义一个数组 haveChess[15][15],来存放每一个点上是否有棋,这个数组可以用来在你下棋的时候来判断你所下的点的位置是否有棋,如果有你就不能在你所点击的位置下棋。 如果这个数组的某个点的值等于 2则表示在这个点上没有棋,如果等于 0 表示这个点上有黑棋,等于 1 则表示该位置上有白棋,如haveChess[10][2]=1,则表示在( 10, 2)这个位置上 有白棋,如果你点击这里的话就不能在这个位置下棋,要选择其他位置。 这样的话就可以来判断计算机能不能下棋了,也能判断出赢棋的情况,那么计算机又应该在那个地方下棋最合适呢。 在这里,定义两个二维数组, scoreBlack[15][15] , scoreWhite[15][15]分别用来存放白棋和黑棋各个未下棋点的分数,以判断计算机在那个点下棋最合适。 如下图所示 图 32 每个点下子后所属的情况 该数组在点( 1)位置时,黑子的情况 2(图上)有一个黑子,所以在该点上加 4 分,既 scoreBlack[4][4]+=4,同样白棋在情况三上有一个白棋所以scoreWhite[4][4]+=4 ,而点( 1)又在情况 4 上有一个白棋,所以scoreWhite[4][4]+=4,即这个点上又加上了 4,而点( 2)应为有棋,所以不做网络五子棋游戏毕业论文 17 判断,在点( 3)这个位置时,因为没有任何棋子,对游戏者来说也就是说不适合攻击也不适合防守,所以也不做判断,而点( 4)位置,对黑棋来看,情况 5是两个子,加上 21 分,在情况 6 上面又有一个子,所以又加 4,在情况 9 上面有 一 个 子 所 以 再 4 , 在 情 况 10 上 面 有 一 个 子 , 再 加 4 所以scoreBlack[6][9]=21+4+4+4=33,对所有的未下棋的点的分数都做一个计算,把白棋和黑棋的在各个点的分数都计算出来,再比较白棋和黑棋他们之中最大的,也就是下棋的最佳位置了。 判断赢棋情况就每次下子之前就在数组 colorFive里面找是否有棋子数等与5的,如果有就有赢棋的情况了,因为在下棋之前也就是说在把这个棋子画到棋盘上之前,它实际已经下棋了,也就是说这个点的各个数据已经改变了,所以就可以判断。 用例图和类图 用例图( use case diagram) 用例图就是由主角、用例 以及它们之间的关系构成的图。 该图说明了用例模型中的关系。 可以将用例图组织到用例包中,并归用例包所有,让特定包中仅显示互为关联关系的内容。 用例图由参与者( Actor)、用例( Use Case)、系统边界、箭头组成,用画图的方法来完成。 参与者不是特指人,是指系统以外的,在使用系统或与系统交互中所扮演的角色。 因此参与者可以是人,可以是事物,也可以是时间或其他系统等等。 还有一点要注意的是,参与者不是指人或事物本身,而是表示人或事物当时所扮演的角色。 比如小明是图书馆的管理员,他参与图书馆管理系统的交互, 这时他既可以作为管理员这个角色参与管理,也可以作为借书者向图书馆借书,在这里小明扮演了两个角色,是两个不同的参与者。 参与者在画图中用简笔人物画来表示,人物下面附上参与者的名称。 第三章 程序设计开发 18 图 33 角色 用例是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的价值的可观察结果。 这是 UML 对用例的正式定义,对我们初学者可能有点难懂。 我们可以这样去理解,用例是参与者想要系统做的事情。 对于对用例的命名,我们可以给用例取一个简单、描述 性的名称,一般为带有动作性的词。 用例在画图中用椭圆来表示,椭圆下面附上用例的名称。 图 34 用例 系统边界是用来表示正在建模系统的边界。 边界内表示系统的组成部分,边界外表示系统外部。 系统边界在画图中方框来表示,同时附上系统的名称,参与者画在边界的外面,用例画在边界里面。 因为系统边界的作用有时候不是很明显,所以我个人理解,在画图时可省略。 箭头用来表示参与者和系统通过相互发送信号或消息进行交互的关联关系。 箭 头尾部用来表示启动交互的一方,箭头头部用来表示被启动的一方,其中用例总是要由参与者来启动。 用例图主要的作用有三个:( 1)获取需求;( 2)指导测试;( 3)还可在整个过程中的其它工作流起到指导作用。 对问题做出了分析之后,就可以根据分析的结果画出用例图了,因为下棋的角色是人,所以角色就是下棋者,下棋者直接发生的动作是点击鼠标,在棋盘上绘制棋子,所以就有可以把整个下棋的过程分为两个用例。 绘制棋盘界面和点击鼠标下棋,点击鼠标下棋包含了绘制棋子的动作,绘制棋子界面包括绘制控制界面,绘制消息界面,和他直接的棋盘界面。 用例图如下。 网络五子棋游戏毕业论文 19 图 35 五子棋。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。