ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:780.51KB ,
资源ID:12258852      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12258852.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于Java中国象棋游戏设计论文.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于Java中国象棋游戏设计论文.docx

1、基于Java中国象棋游戏设计论文本科毕业论文(设计)题目: 基于Java的中国象棋游戏设计 摘要:随着社会的发展,科学技术不断提高,人们的娱乐活动不断地增加,中国象棋作为中华民族的传统文化,不仅在国内深受群众喜爱,而且流传国外。开发中国象棋游戏软件,推广我们传统的象棋文化。本文通过运用Java语言、软件工程的知识,参考网上一些文献资料的设计思路,开发出中国象棋对弈游戏系统,程序实现了游戏计时、悔棋、和棋、认输等功能。通过对系统进行详细地需求分析,设计出了系统的逻辑模型,并且对各个功能进行了详细的分析,对中国象棋规则进行了详细地算法描述,最后对该程序的功能进行了测试与总结。关键词:JAVA;中国

2、象棋;对弈;游戏1 绪论1.1 项目开发的背景及意义随着电子信息技术的不断发展以及网络技术的普及,网络能够提供多样、便捷的服务,已经成为人们生产生活中不可缺少的重要组成部分。如今网络休闲游戏发展非常迅猛,它凭借健康、方便、益智、互动性强等诸多优点,成为大众休闲娱乐的首选。作为中华民族悠久文化的代表之一,中国象棋不仅源远流长,而且基础广泛,作为一项智力运动,中国象棋不仅能丰富人们文化生活,陶冶情操,而且有助于开发智力,启迪思维,培养人的品格。弈棋可磨练意志,锤炼品质,塑造性格,陶冶情操,中国象棋是中国文化的缩影,是中华民族智慧的反映。中国象棋的规则的复杂性是社会复杂性在中国象棋游戏中的一个反映。

3、通过Java技术开发中国象棋游戏系统,以便于与时俱进,将中国象棋运用于计算机等电子设备,实现中国象棋对弈系统,为象棋在网络应用平台提供多人对弈。1.2 研究现状及发展趋势象棋游戏软件现在有腾讯象棋、JJ象棋、象棋巫师等游戏软件;腾讯象棋和JJ象棋是网络对弈游戏。现在的棋盘类软件有很多,大多数都是游戏对战平台的网络对弈软件;如腾讯QQ象棋、JJ象棋等网络对弈游戏。在文献7中提到的象棋巫师等。在文献5中提到五子棋、国际象棋等棋类的计算机博弈已经取得了成功,但规则更加复杂的中国象棋电子计算机博弈尚处于萌芽阶段。棋盘类游戏将向多平台、智能化方向发展。1.3 研究目标此项目主要应用于中国象棋对弈软件,本

4、文针对的是双人的对弈,能够运用该软件进行象棋对弈。实现对弈计时、悔棋、和棋、认输等功能。2 可行性研究可行性研究的目的,就是以最小的代价、在尽量短的时间内确定问题是否能够被解决。因此,必须客观的分析问题,找出主要的可能解决法,然后从系统逻辑模型出发,分析若干种主要的解法,研究每种解法的可行性,从而最终确定这项工程的可行性。2.1 技术可行性Java是Sun Microsystem公司开发的编程语言,Java语言具有高效性、通用性、平台移植性和安全性等特点。运用Eclipse软件进行编写,并进行编译执行。2.1.1使用Java技术的优点Java是非常新的一种语言,具有面向对象、分布式、解释执行、

5、体系结构中立、可移植、多线程、以及动态性等特点。和其他编程语言相比,它有很多优点。使用Java语言的主要优点体现在以下几个方面:(1)灵活性Java语言是非常灵活的,它支持部署和开发环境中的各种变化。因为Java是在面向对象的基础平台上构建的,故其很容易对基本的语言进行扩展和发布。(2)厂商的广泛支持采用Java有一个非常重要的原因,就是受到了厂商的广泛支持。Java不仅仅只有一个主要的供应商,有许多公司都生产、支持Java产品。(3)用户的广泛支持Java语言具有良好的用户基础,它们并不局限于某一个特定的公司。在Internet上,有许多资源以及Java示例代码。另外,Java程序员还可以使

6、用许多免费软件或共享软件和许多应用程序代码。(4)平台独立性Java源代码和运行时的文件与操作系统无关,可以支持多个操作系统。因此,在Windows环境中创建并编译Java类文件,无需任何修改就可以将其部署到Linux环境中。Java的这种特性,也称为可移植性,这一点使得Java开发更加方便,对于那些需要一个特定操作系统、又需要支持其他操作系统的企业来说是非常重要。2.1.2 Eclipse简介 Eclipse 是一个基于 Java 的可扩展开发平台。它本身只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Deve

7、lopment Tools,JDT)。 Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),该组件主要是针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。Eclipse这样功能完整且成熟的开发环境,大部分的开发掌握在IBM手中,但是有一部份是由eclipse.org的软件联盟主导。Eclipse使用开放原始码许可书,即用公共公众许可书Common Public License(CPL)作为授权方式,设计上是可以容许商业利益的。CPL可以容许Eclipse和其它开放原始码软件合组时,能

8、够用更加严谨的许可书散布软件,可以用于商业途径。CPL经过Open Software Initiative(OSI)认证,其内容符合开放原始码授权的需求。2.2 经济可行性经济可行性分析是指进行成本与效益的核算分析,从经济角度判断开发该系统的预期经济效益能否超过它的开发成本。当系统开发人员接受开发任务时,首要研究开发任务,判断是否具有简单明确合理可行的解决办法。其实,有许多不可能在预期的规模内解决的问题,如果某些问题无法很好的解决,那么花费在该项工程上的任何时间、资源和经费都是浪费的。因此可行性分析必不可少。该系统的开发运用Java开发环境Eclipse来完成,参考图书及网上相关资料,由自己独

9、立开发完成,在经济方面成本可自己承担,具有一定的经济可行性。2.3 社会可行性随着计算机科技的发展,个人计算机的普及,越来越多的人们接触并使用计算机,现今普通人也能熟练地使用计算机,并习惯使用计算机通过网络进行学习工作和娱乐活动,这样更有利于人力资源的有效利用。而且该程序的简单易用,使得人们能够使用该程序进行对弈。3 需求分析及总体设计3.1 需求分析该程序需要实现象棋游戏的以下几个基本功能:(1)开始游戏/重新开始:开始一局新的象棋对弈;(2)计时:设置走棋时间限制和棋局的时间限制;(3)悔棋:将棋子返回到之前所处的位置;(4)求和和认输:将双方协商棋局为和棋,或一方认输结束棋局;(5)退出

10、:退出本程序;(6)提示:显示出象棋的走棋、赢棋规则。3.2 总体设计3.2.1 总体结构设计中国象棋软件的总体结构层次方框图如图3-1所示。图3-1 层次方框图3.2.2 棋盘棋子的设计打开程序后显示棋盘界面如图3-2所示。图3-2 棋盘界面棋盘是棋子的活动位置棋子活动的场所。在长方形的平面上,由九竖线和十条横线相交组成,共有九十个交叉点,棋子摆在交叉点上。中间部分,即棋盘的第五和第六两横线之间末画竖线的空白地带称为“楚河汉界”,也称“河界”。两端的中间,以斜交叉线构成“米”字方格的地方,叫作“九宫”(它共有九个交叉点)。开始游戏后调入棋子后界面如图3-3。图3-3 棋子调入界面棋子共有三十

11、二个,分为红、黑两组,各有十六个,由对弈的双方各执一组。兵种是一样的,分为七种:将(帅)、仕、象(相)、车、马、炮、卒(兵)。红方持有棋子:一个帅,仕、相、车、马、炮各有两个,五个兵。黑方持有棋子:一个将,士、象、车、马、炮各有两个,五个卒。其中帅与将;仕与士;相与象;兵与卒的作用完全相同,仅仅是区别红棋和黑棋。 3.3 类图说明该程序的所包含的类如图3-4所示,层次结构如图3-5所示。图3-4 类图 图3-5 层次结构图在图3-4中,zgxq包内的XQJFrame.java与ZGXQ.java是本程序的源代码文件;image中的棋子图片,及Rule.txt象棋规则说明文件是程序中所调用的。图

12、3-5所示的是本项目的层次结构图,显示了本项目中的类及其所用方法的层次结构。层次结构图表示的是程序系统中运用的方法、函数的层次结构,显示了它们的层次关系。XQJFrame.java中的方法大纲如图3-6所示,图3-6中(a)的最后与(b)的最前面相联。 图3-6(a)方法大纲 图3-6(b)方法大纲图3-6中(a)和(b)所示的是本项目的大纲,“导入声明”是本程序中调用的Java自带的方法;“XQJFrame”是本程序中运用的参数,及方法的属性和顺序。4 详细设计4.1 程序流程设计程序的主体流程图如图4-1所示。该流程图是在不悔棋、求和、认输的情况下的流程,若进行悔棋、求和等操作,则执行悔棋

13、、求和的方法。图4-1 程序流程图4.2 开始游戏设计打开程序后,点击开始,弹出询问对话框(如图4-2),确定后,弹出局时和步时的设置界面(如图4-3,图4-4),设置好后开始游戏(如图3-3)。图 4-2 对话框图4-3 局时设置图4-4 步时设置局时是限制一盘棋的时间,时间到时就会结束该局;步时是限制走一步棋所用的时间,当一方走棋超时时,则认定该方放弃走棋,该方认输,对方获胜。代码如下:if (e.getSource() = anew) / 新游戏(N) int temp = JOptionPane.showConfirmDialog(this, 是否开始新游戏?, 新游戏, JOptio

14、nPane.YES_NO_OPTION); if (temp = JOptionPane.YES_OPTION) / 或者temp=0,表示点击是(Y);temp=1,表示点击否(N) int count = 0; / 记录点击了几次取消或者几次没有输入值 String input1 = (String) JOptionPane.showInputDialog(this, 设定局时为(单位:分钟,如果输入0,则表示没有局时限制):, 局时设置, JOptionPane.PLAIN_MESSAGE, null, null, 0);/ 输入局时 String ssJtime; if (Jtime

15、= 0) / 输入数值为0 ssJtime = 无限制; else ssJtime = Jtime / 3600 + 小时 + (Jtime / 60 - Jtime / 3600 * 60) + 分 + (Jtime - Jtime / 60 * 60) + 秒; if (input1 = null | input1.equals() / 未输入数值 JOptionPane.showConfirmDialog(this, 没有设置局时,局时为 + ssJtime, 游戏信息, JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE);

16、count+; else if (Integer.parseInt(input1) 0) / 输入数值为负数 JOptionPane.showConfirmDialog(this, 不能输入负值,局时为 + ssJtime, 游戏信息, JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE); count+; else Jtime = Integer.parseInt(input1) * 60; String input2 = (String) JOptionPane.showInputDialog(this, 设定步时为(单位:秒钟,

17、如果输入0,则表示没有步时限制):, 步时设置, JOptionPane.PLAIN_MESSAGE, null, null, 0); String ssBtime; if (Btime = 0) / 输入数值为0 ssBtime = 无限制; else ssBtime = Btime / 3600 + 小时 + (Btime / 60 - Btime / 3600 * 60) + 分 + (Btime - Btime / 60 * 60) + 秒; if (input2 = null | input2.equals() / 未输入数值 JOptionPane.showConfirmDialo

18、g(this, 没有设置步时,步时为 + ssBtime, 游戏信息, JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE); count+; else if (Integer.parseInt(input2) 0) / 输入的数值为负值 JOptionPane.showConfirmDialog(this, 不能输入负值,步时为 + ssBtime, 游戏信息, JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE); count+; else Btime = Integer

19、.parseInt(input2); Game_begin(); 4.3 功能设计4.3.1 计时功能打开游戏,再开始游戏前,进行局时和步时的设置(如图4-3,图4-4),局时是限制一盘棋的时间,时间到时就会结束该局;步时是限制走一步棋所用的时间,当一方走棋超时时,则认定该方放弃走棋,该方认输,对方获胜。局时和步时设置时,需要输入自然数,局时是分钟数,步时是秒数;当数值设置为0时,默认为没有时间限制。运用Thread方法定义局时、步时倒计时线程,“int Jtime = 0, Btime = 0;”定义局时、步时限制。“int jtime; int Rbtime, Bbtime;”显示双方的局

20、时、步时的剩余时间。用setBounds()设置双方局时、步时在界面上的显示位置。开始游戏后,设置局时、步时,启动局时、步时倒计时线程。当局时或 步时完毕时,结束进程,并结束游戏。4.3.2 悔棋功能悔棋,是在误操作和失误的情况下,两方协商同意后返回到之前的状态。定义Vector Var,保存棋子的动作;定义悔棋方法“huiqi(int n)”。开始游戏后,当某方点击悔棋按钮时,该哪方走棋则认为是那方要求悔棋; 由另一方同意悔棋后,执行“huiqi(int n)”方法,返回到该方前一步走棋 状态,继续由该方走棋,并删除Var中相应的记录。4.3.3 求和和认输求和,是在一方认为都无法战胜对手时

21、,提出求和,另一方同意后,判定为该局为和棋,游戏结束。认输,是一方在走投无路,或自认为自己一定会输时,主动认输,则判定对方获胜,游戏结束。代码如下:if (e.getSource() = qiuhe) / 求和(P) String s1 = null, s2 = null; / s1表示当前走棋的玩家,s2表示另一方 if (player = 1) / 红方走棋,红方点的求和 s1 = 红方; s2 = 黑方; else / player=2,黑方走棋,黑方点的求和 s1 = 黑方; s2 = 红方; int temp1 = JOptionPane.showConfirmDialog(this

22、, s1 + 确认求和?, 求和, JOptionPane.YES_NO_OPTION); if (temp1 = JOptionPane.YES_OPTION) int temp2 = JOptionPane.showConfirmDialog(this, s1 + 求和, + s2 + 是否同意和棋?, 和棋, JOptionPane.YES_NO_OPTION); if (temp2 = JOptionPane.YES_OPTION) / 一方求和,另一方同意,双方和棋,游戏结束。 Game_over(); message.setText(null); message.setForegr

23、ound(g); message.setText(双方和棋!); else if (e.getSource() = renshu) / 认输(L) String s1 = null, s2 = null; / s1表示当前走棋的玩家,s2表示另一方 if (player = 1) / 红方走棋,红方点的认输 s1 = 红方; s2 = 黑方; message.setText(null); message.setForeground(b); else / player=2,黑方走棋,黑方点的认输 s1 = 黑方; s2 = 红方; message.setText(null); message.s

24、etForeground(r); Game_over(); JOptionPane.showConfirmDialog(this, s1 + 认输, + s2 + 获胜!, 获胜, JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE); message.setText(s2 + 获胜!); 4.3.4 信息帮助信息帮助,是介绍中国象棋的基本走棋、吃棋和规则说明。4.4 界面设计该程序界面包括:菜单栏,信息提示,棋盘界面,计时器界面和棋子。菜单栏包括:开始、悔棋、求和、认输、帮助、退出。菜单栏如图4-5所示。菜单栏运用JMenuBar、

25、JButton方法定义,并放置界面的顶端;用ActionListener方法设置按键监听。图4-5 菜单栏信息提示:是用JLabel方法显示玩家走棋、悔棋、赢棋等信息;置于菜单栏下面,并设置字体的类型、颜色和大小。棋盘界面:在菜单栏下面添加棋盘图片,设置棋盘位置(如图3-2),并添加鼠标监听。棋盘由九竖十横的直线交叉组成,直线的交叉点称为棋点。棋盘上共有九十个棋点,象棋子摆在和活动在这些棋点上。棋盘中间没有线的空白地方,叫做“楚河汉界”;划有斜交叉线的地方,叫做“九宫”。计时器界面:在棋盘的右侧,显示出开始游戏设置的局时和步时,并设置字体的类型、颜色和大小。棋子:开始游戏,通过调用棋子图片,显

26、示在棋盘上(如图3-3);定义数组qx,qy保存棋子在棋盘上的坐标。棋子共有三十二个,分为红棋、黑棋两组,每组各有七种,十六个,其名称和数目如下:红棋子:“帅”一个,“车、马、炮、相、仕”各两个,“兵”五个。 黑棋子:“将”一个,“车、马、炮、象、士”各两个,“卒”五个。4.5 走棋和吃棋规则设计对局时,由执红棋的一方先走,双方轮流各走一步,直至分出胜、负、和,对局即结束。轮到走棋的一方,将某个棋子从一个交叉点移动到另一个交叉点,或者吃掉对方的棋子占领其棋点,算走了一步。双方各走一步,称为一个回合。走棋: 帅(将)每一步只许走一格,前进、后退、横走都可以,但不能走出“九宫”。将和帅不允许在同一

27、竖线上直接对面。士每一步只许沿“九宫”斜线走一格,可进可退。相(象)不能越过“河界”,每一步斜走两格,可进可退,即俗称“相(象)走田”。若田字中心有棋子,则不许走过去。马每一步走日字的对角点,可进可退,即俗称“马走日”。如果在要去的方向有棋子挡住,俗称“蹩马腿”,不允许走过去。车每一步沿着横线或竖线直走,不限格数。炮在不吃棋子的时候,走法同车一样。兵(卒)在没有过“河界”前,每步只许向前直走一格;过“河界”后,每步可向前直走或横走一格,但不能后退。走棋和吃棋的流程图如图4-6所示。图4-6 走棋和吃棋流程图注:图4-6是走棋和吃棋流程图,图中连接总体流程。吃棋:走一步棋时,除炮以外,如果己方棋

28、子可以走到的位置上有对方棋子存在,就可以把对方棋子吃掉而占领那个位置。炮吃子时必须隔一个棋子跳吃,即俗称“炮隔山打”。吃子的一方,把被吃掉的棋子移走。在鼠标点击监听“mouseClicked(MouseEvent e)”方法中,先单击己方棋子,并保存棋子下标Man及坐标(Manx,Many),再单击可移动位置,走棋或吃子,并保存记录。定义“boolean Move(Ex,Ey)”方法,设置棋子移动吃子规则;另外定义“boolean paoEat(ix,iy)”方法定义炮吃子规则。5 系统测试与总结5.1 系统测试系统测试是软件开发过程中非常重要的一个环节,它是衡量我们所开发系统的准则。通过各种

29、形式的测试以及相应的调试,使软件系统达到预定的要求。通过对软件测试结果的分析可以预测软件的可靠性;反之,也可以根据对软件可靠性的要求,来决定测试和调试过程什么时候可以结束。在软件生命周期中的每个阶段都无法避免的会出现差错,只有做好软件的测试工作,才能保证软件的安全可靠性。象棋游戏系统最好的测试方式是通过进行象棋对弈,和各个功能的执行来测试。5.1.1 系统功能测试在进行悔棋、认输、求和等操作时,系统运行正常。黑方点击“悔棋”时,弹出图5-4界面,由红方同意或拒绝黑方悔棋,同意则棋盘界面回到一回合前状态,悔棋功能正常。图5-4 悔棋对话框黑方点击“求和”时,弹出图5-5界面,由红方同意或拒绝黑方求和,同意则棋局结束,本局为和棋,求和功能正常。图5-5 求和对话框红方点击“认输”时,弹出图5-6界面,结束棋局,黑方获胜,认输功能正常。图5-6 红方认输5.1.2 运行效果测试开始程序后,进行对弈操作,运行正常。程序开始运行后的效果如下图。图5-7是开始游戏时询问对话框。图5-8是游戏退出时的询问窗口。图5-9是象棋游戏对弈过程中的界面。图 5-7 开始对话框图5-8 退出对话框图 5-9 对弈界面由上述图所示,象棋对弈系统可以正常运行使用,各个功能已经实现,没有发生错误。5.2 总结与展望本次课程设计充分利用自己学的Java知识,熟

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1