基于Java的中国象棋游戏设计 论文03854.doc

上传人:laozhun 文档编号:2387391 上传时间:2023-02-17 格式:DOC 页数:23 大小:926.50KB
返回 下载 相关 举报
基于Java的中国象棋游戏设计 论文03854.doc_第1页
第1页 / 共23页
基于Java的中国象棋游戏设计 论文03854.doc_第2页
第2页 / 共23页
基于Java的中国象棋游戏设计 论文03854.doc_第3页
第3页 / 共23页
基于Java的中国象棋游戏设计 论文03854.doc_第4页
第4页 / 共23页
基于Java的中国象棋游戏设计 论文03854.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《基于Java的中国象棋游戏设计 论文03854.doc》由会员分享,可在线阅读,更多相关《基于Java的中国象棋游戏设计 论文03854.doc(23页珍藏版)》请在三一办公上搜索。

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

2、1.1 项目开发的背景及意义11.2 研究现状及发展趋势11.3 研究目标12 可行性研究22.1 技术可行性22.1.1 使用java技术的优点22.1.2 Eclipse简介32.2 经济可行性32.3 社会可行性33 需求分析及总体设计43.1 需求分析43.2 总体设计43.2.1 总体结构设计43.2.2 棋盘棋子的设计53.3 类图说明64 详细设计94.1 程序流程设计94.2 开始游戏设计94.3 功能设计124.3.1 计时功能124.3.2 悔棋功能124.3.3 求和和认输124.3.4 信息帮助134.4 界面设计144.5 走棋和吃棋规则设计145 系统测试与总结16

3、5.1 系统测试165.1.1 系统功能测试165.1.2 运行效果测试175.2 总结与展望18参考文献201 绪论1.1 项目开发的背景及意义随着电子信息技术的不断发展以及网络技术的普及,网络能够提供多样、便捷的服务,已经成为人们生产生活中不可缺少的重要组成部分。如今网络休闲游戏发展非常迅猛,它凭借健康、方便、益智、互动性强等诸多优点,成为大众休闲娱乐的首选。作为中华民族悠久文化的代表之一,中国象棋不仅源远流长,而且基础广泛,作为一项智力运动,中国象棋不仅能丰富人们文化生活,陶冶情操,而且有助于开发智力,启迪思维,培养人的品格。弈棋可磨练意志,锤炼品质,塑造性格,陶冶情操,中国象棋是中国文

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

5、段。棋盘类游戏将向多平台、智能化方向发展。1.3 研究目标此项目主要应用于中国象棋对弈软件,本文针对的是双人的对弈,能够运用该软件进行象棋对弈。实现对弈计时、悔棋、和棋、认输等功能。2 可行性研究可行性研究的目的,就是以最小的代价、在尽量短的时间内确定问题是否能够被解决。因此,必须客观的分析问题,找出主要的可能解决法,然后从系统逻辑模型出发,分析若干种主要的解法,研究每种解法的可行性,从而最终确定这项工程的可行性。2.1 技术可行性Java是Sun Microsystem公司开发的编程语言,Java语言具有高效性、通用性、平台移植性和安全性等特点。运用Eclipse软件进行编写,并进行编译执行

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

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

8、开发环境。Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。 Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),该组件主要是针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。Eclipse这样功能完整且成熟的开发环境,大部分的开发掌握在IBM手中,但是有一部份是由eclipse.org的软件联盟主导。Eclipse使用开放原始码许可书,即用公共公众许可书Common Public License(CPL)作为授

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

10、不可少。该系统的开发运用Java开发环境Eclipse来完成,参考图书及网上相关资料,由自己独立开发完成,在经济方面成本可自己承担,具有一定的经济可行性。2.3 社会可行性随着计算机科技的发展,个人计算机的普及,越来越多的人们接触并使用计算机,现今普通人也能熟练地使用计算机,并习惯使用计算机通过网络进行学习工作和娱乐活动,这样更有利于人力资源的有效利用。而且该程序的简单易用,使得人们能够使用该程序进行对弈。3 需求分析及总体设计3.1 需求分析该程序需要实现象棋游戏的以下几个基本功能:(1)开始游戏/重新开始:开始一局新的象棋对弈;(2)计时:设置走棋时间限制和棋局的时间限制;(3)悔棋:将棋

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

12、”(它共有九个交叉点)。开始游戏后调入棋子后界面如图3-3。图3-3 棋子调入界面棋子共有三十二个,分为红、黑两组,各有十六个,由对弈的双方各执一组。兵种是一样的,分为七种:将(帅)、仕、象(相)、车、马、炮、卒(兵)。红方持有棋子:一个帅,仕、相、车、马、炮各有两个,五个兵。黑方持有棋子:一个将,士、象、车、马、炮各有两个,五个卒。其中帅与将;仕与士;相与象;兵与卒的作用完全相同,仅仅是区别红棋和黑棋。 3.3 类图说明该程序的所包含的类如图3-4所示,层次结构如图3-5所示。图3-4 类图图3-5 层次结构图在图3-4中,zgxq包内的XQJFrame.java与ZGXQ.java是本程序

13、的源代码文件;image中的棋子图片,及Rule.txt象棋规则说明文件是程序中所调用的。图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

14、-1所示。该流程图是在不悔棋、求和、认输的情况下的流程,若进行悔棋、求和等操作,则执行悔棋、求和的方法。图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.s

15、howConfirmDialog(this, 是否开始新游戏?, 新游戏,JOptionPane.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,

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

17、onPane.WARNING_MESSAGE);count+; else if (Integer.parseInt(input1) 0) / 输入数值为负数JOptionPane.showConfirmDialog(this, 不能输入负值,局时为 + ssJtime,游戏信息, JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);count+; elseJtime = Integer.parseInt(input1) * 60;String input2 = (String) JOptionPane.showInputDialog(

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

19、mDialog(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+; elseBtime = Integer.p

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

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

22、方同意后,判定为该局为和棋,游戏结束。认输,是一方在走投无路,或自认为自己一定会输时,主动认输,则判定对方获胜,游戏结束。代码如下: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, s1 + 确认求和?, 求

23、和,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.setForeground(g);message.setTex

24、t(双方和棋!); 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.setForeground(r);Game_over();JOpti

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

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

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

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

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

30、预测软件的可靠性;反之,也可以根据对软件可靠性的要求,来决定测试和调试过程什么时候可以结束。在软件生命周期中的每个阶段都无法避免的会出现差错,只有做好软件的测试工作,才能保证软件的安全可靠性。象棋游戏系统最好的测试方式是通过进行象棋对弈,和各个功能的执行来测试。5.1.1 系统功能测试在进行悔棋、认输、求和等操作时,系统运行正常。黑方点击“悔棋”时,弹出图5-4界面,由红方同意或拒绝黑方悔棋,同意则棋盘界面回到一回合前状态,悔棋功能正常。图5-4 悔棋对话框黑方点击“求和”时,弹出图5-5界面,由红方同意或拒绝黑方求和,同意则棋局结束,本局为和棋,求和功能正常。图5-5 求和对话框红方点击“认

31、输”时,弹出图5-6界面,结束棋局,黑方获胜,认输功能正常。图5-6 红方认输5.1.2 运行效果测试开始程序后,进行对弈操作,运行正常。程序开始运行后的效果如下图。图5-7是开始游戏时询问对话框。图5-8是游戏退出时的询问窗口。图5-9是象棋游戏对弈过程中的界面。图 5-7 开始对话框图5-8 退出对话框图 5-9 对弈界面由上述图所示,象棋对弈系统可以正常运行使用,各个功能已经实现,没有发生错误。5.2 总结与展望本次课程设计充分利用自己学的Java知识,熟练掌握有关Java语言的语法基础,面向对象,Applet的运用,还有图形的设计,有关线程的知识。对于中国象棋对弈系统,把Java知识灵

32、活的结合了起来,让人们对Java有了一个崭新的认识。该程序实现了中国象棋双人对弈,并实现了悔棋、求和、认输等功能。现在网络上也有一些网络象棋对弈软件和人机对战软件,但网络上的人机对战软件只是机器运用简单的人工智能分析所有符合规则的走法,选择某种进行走棋;随着人工智能的发展,使机器拥有学习分析的能力,若把人工智能与中国象棋相结合,使得机器通过一些某人的对弈棋谱形成该人的对弈风格,并在选择人机对战时选择某一种风格,使得我们感觉如同跟真人对战一样;而且,可以选择两种风格进行机器与机器对战。如若实现,我们可以体验与古代人、世界冠军等我们无法无法接触到的人对战,而且还可以使他们的风格对战,我们从中学习提

33、高。参考文献1 殷兆麟等. Java语言程序设计(第2版)M. 北京:高等教育出版社,2002.2 张海藩. 软件工程导论(第5版)M. 北京:清华大学出版社,2008.3 张湘辉等. 软件开发的过程与管理M. 北京:清华大学出版社,2005.4 宛延闿等. 实用Java程序设计教程M. 北京:机械工业出版社,2006.5 谢国. 中国象棋机器博弈数据结构设计与搜索算法研究D. 陕西:西安理工大学,2008.6 徐白雁. JAVA编程语言及其应用J. 电脑与信息技术.1996,(04):33-35.7 田翠华,宋兴亮,朱顺痣,孔丽新. 中国象棋计算机博弈算法研究J. 信息技术.2011,(12

34、):5-9.8 美豪顿等. JAVA2编程指南M. 电子工业出版社,2002.9 James Goodwill. Pure Java Server PagesM. Indianapolis Ind: Sams, 2000.10 Braude E J. Software EngineeringAn Object_Oriented PerspectiveM. New York:John Wiley & Sons,2001.Chinese Chess Game Design Based on Java Abstract:With the development of society, science

35、 and technology continue to improve peoples recreational activities continue to increase, Chinese chess, as the traditional Chinese culture and are very popular, not only in domestic but also spread abroad. Through the development of Chinese chess game software, and promote our traditional chess tra

36、dition. Through the use of the java language, knowledge of software engineering, refer to the online documentation design ideas developed Chinese chess, chess game system, program the game timing, undo, draw, throw in the towel and so on. Through the system in detail requirements analysis, design a system model, and a detailed analysis of the various functions of Chinese chess rules to carry out a detailed algorithm design, and finally the function of the program was tested and summary.Key words: JAVA ;Chinese chess;chess;game

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号