第一范文网 - 专业文章范例文档资料分享平台

中国象棋游戏设计(4)

来源:用户分享 时间:2019-04-30 本文由来自喵~星 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

信息科学与技术学院学士学位论文

3 系统设计

3.1 中国象棋游戏的结构设计

中国象棋游戏的主体是客户端,整个游戏的规则都在客户端,服务器端只是在中间传递数据,起到一个中介的作用。因为只有有了服务器的基础框架,客户端在开发过程中才能进行一些必要的测试,这是该类游戏一般的开发流程 。

服务器端运行后,用户可以通过运行类进入服务器的主界面。服务器线程是服务器启动后创建并启动的第一个线程,该线程主要用于接收客户端的连接,并为每一个连接分配一个服务器代理线程 。服务器代理线程主要用于接收客户端传来的信息,并将该信息转发给对应的另一客户端。服务器为所有客户端都分配了一个该类线程实例,单独为特定客户端进行服务。同时每一个服务器代理线程都有能惟一标识其的名称,即昵称。

客户端运行后,用户通过运行类连接服务器,也是通过在该类的窗体中与其他玩家进行对弈。客户端代理线程主要用于接收服务器传来的消息,并根据不同的消息进行相应的业务处理。客户端与服务器连接,完成通信框架的开发。中国象棋游戏服务器端和客户端的结构图如图3-1所示。

图3-1 C/S结构图

11

信息科学与技术学院学士学位论文

棋盘类除了完成绘制棋盘的作用,同时还负责下棋逻辑的处理。棋子规则类的开发,下棋的规则和棋子行棋着法的生成。

对于棋盘的开发,主要是运用数组下标代替像素坐标,将棋子放在数组里。这样对于每一个位置的状态,都可以通过对应的数组状态进行确定,非常的方便。由于棋盘粘附在桌面上,所以也要用到网络套接字技术。游戏通信主要是通过字符串传递信息。

通过使用抗锯齿这个知识点,使象棋棋子变的更加的平滑,美观。这里用到了Swing的相关知识。不过,由于抗锯齿占用很大的系统资源,如果使用不当会严重影响游戏的性能 。

中国象棋对弈过程是由红方先走棋,每走一步需要判断是否结束,若尚未分出胜负,则由对方走棋,直到分出胜负为止。中国象棋对弈流程图如图3-2所示。

图3-2 对弈流程图

12

信息科学与技术学院学士学位论文

服务器和客户端完成开发后,若要进行正常的对弈,主要通过走棋规则和吃棋规则来实现。中国象棋游戏的客户端即是游戏界面,它包括菜单栏,棋盘和棋子,以及相关的信息提示。各个棋子的行棋规则和吃棋规则是开发过程的重点和难点。此软件的层次结构图如图3-3所示。

图3-3 中国象棋游戏的层次结构图

3.2 系统的功能模块设计

3.2.1 计时功能

在正式开始游戏之前,系统有默认的局时和步时,也可由挑战者自行设定局时和步时。局时是限制一盘棋的时间,设定的时限一到则该局结束,由系统默认挑战者挑战失败;走一步棋允许使用的最大时限称为步时,为了防止玩家拖延超时,若玩家超时,则系统默判该玩家放弃走棋,对家获胜。

在通常情况下,局时是分钟数,步时是秒数。设置局时和步时,需要输入自然数,当数值设置为0时,默认没有时间限制。

运用Thread方法定义局时、步时倒计时线程,“int Jtime=0,Btime=0;”定义局时、

13

信息科学与技术学院学士学位论文

步时限制。“int jtime; int Rbtime,Bbtime;”显示双方的局时、步时的剩余时间。用setBounds( )设置双方局时、步时在界面上的显示位置。

在游戏开始之前设置局时、步时,正式开始游戏,则启动局时、步时倒计时线程。当局时或步时完毕时,结束进程,即游戏结束。 3.2.2 悔棋功能

在对弈过程中,误操作和失误的一方可以向另一方提出悔棋要求,双方经过协商,请求的一方得到对方同意后,系统执行悔棋程序,可返回上一步的状态。

通过定义Vector Var来保存棋子的动作,定义悔棋方法“HuiQi(int n)”。在游戏进行时,当某方点击悔棋按钮,则认为是那方要求悔棋,由另一方同意悔棋后,执行“HuiQi(int n)”方法,返回到该方前一步走棋状态,继续由该方走棋,并删除Var中相应的记录。 3.2.3 求和和认输功能

求和是在玩家认为无论怎样都无法战胜对手,而对手也没有战胜自己的可能,这时候需要执行求和功能,另一方同意后,判定该局为和棋,游戏结束,返回初始状态。

认输是在玩家走投无路没有任何赢面,或自认为一定会输时,主动放弃,则判定对方获胜,游戏结束,回到初始化界面。

3.3 走棋和吃棋规则设计

根据象棋的基本规则,通常是红棋先走,在各自的约束条件下双方轮流各走一步,直至分出胜负,或者和棋,对局即结束。当走棋的一方将某个棋子从一个棋点移动到另一个棋点,或者吃掉对方的棋子覆盖其棋点时,算走了一步。以此类推,双方各走一步,称为一个回合。

14

信息科学与技术学院学士学位论文

3.3.1 走棋规则

(1)“将、帥”的行棋规则设计

“将、帥”只在各自的九宫格内活动,每一步仅可以横向或竖向移动一个棋点。使用if语句来判断,先定义两个整数常量a、b,分别获得I,J坐标的差,通过if(a==0 && b==1和a==1 && b==0)来判断棋子是否走一格,然后在(start J>=4)的条件下,有两种情况,通过if(end J<7)来判断下方的“将”是否走出“九宫”;接着用if(end J>2)来判断上方的“帥”是否越界。再通过if(end I>5 && end I<3)来判断“将”和“帥”是否左右越界。如果棋子“将”、“帥”都在各自的约束之下,则移向目标点,否则棋子原地不动。

现在我们假设“将”、“帥”的棋点坐标为(I,J),I为横坐标,J为纵坐标,则a=max I-min I, b=max J-min J。下列棋子坐标也使用该方法获得坐标的差。

(2)“士、仕”的行棋规则设计

“士、仕”只在九宫格内活动,每一步只能够沿对角方向斜移一个棋点。这样只有一种情况来考虑,即纵向走一个棋点,横向走一个棋点。用if语句来判断,在if(a==1 && b==1)条件下,if(start J>4),分两种情况,通过if(end J<7)来判断下方的“士”是否越界;使用if(end J>2)来判断上方的“仕”是否越界。再通过if(end I>5 && end I<3)来判断“士”和“仕”是否越过左右两边的界限。假若棋子“士”和“仕”符合各自的走棋规则,则可以走动,否则棋子原地不动。

(3)“象、相”的行棋规则设计

“象、相”只能在河界的一侧活动,即不能过河,每一步只能沿对角线方向移动两个棋点,俗语说的“象走田”,即从“田”字的一角,跳到所处“田”字位置的对角。若是“盖象眼”的话,则不能移动,即“田”字中心不能有落子。

这得从上下两端两种情况分别考虑,行棋规则是纵向走两个棋点,横向也走两个棋点。用if语句来判断,先用if(a==2 && b==2)来判断棋子是否走\田\字格,再通过if(end J<5)来判断棋子“象”是否过河,通过if(end J>4)来判断棋子“相”是否过河;接着在运用if(qizi[(maxI-minI)/2][(maxJ-minJ)/2]!=null)语句来判断“田”

15

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新综合文库中国象棋游戏设计(4)全文阅读和word下载服务。

中国象棋游戏设计(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/162464.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top