基于Java中国象棋游戏设计论文Word格式.docx
- 文档编号:3887786
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:24
- 大小:780.51KB
基于Java中国象棋游戏设计论文Word格式.docx
《基于Java中国象棋游戏设计论文Word格式.docx》由会员分享,可在线阅读,更多相关《基于Java中国象棋游戏设计论文Word格式.docx(24页珍藏版)》请在冰点文库上搜索。
可行性研究的目的,就是以最小的代价、在尽量短的时间内确定问题是否能够被解决。
因此,必须客观的分析问题,找出主要的可能解决法,然后从系统逻辑模型出发,分析若干种主要的解法,研究每种解法的可行性,从而最终确定这项工程的可行性。
2.1技术可行性
Java是SunMicrosystem公司开发的编程语言,Java语言具有高效性、通用性、平台移植性和安全性等特点。
运用Eclipse软件进行编写,并进行编译执行。
2.1.1使用Java技术的优点
Java是非常新的一种语言,具有面向对象、分布式、解释执行、体系结构中立、可移植、多线程、以及动态性等特点。
和其他编程语言相比,它有很多优点。
使用Java语言的主要优点体现在以下几个方面:
(1)灵活性
Java语言是非常灵活的,它支持部署和开发环境中的各种变化。
因为Java是在面向对象的基础平台上构建的,故其很容易对基本的语言进行扩展和发布。
(2)厂商的广泛支持
采用Java有一个非常重要的原因,就是受到了厂商的广泛支持。
Java不仅仅只有一个主要的供应商,有许多公司都生产、支持Java产品。
(3)用户的广泛支持
Java语言具有良好的用户基础,它们并不局限于某一个特定的公司。
在Internet上,有许多资源以及Java示例代码。
另外,Java程序员还可以使用许多免费软件或共享软件和许多应用程序代码。
(4)平台独立性
Java源代码和运行时的文件与操作系统无关,可以支持多个操作系统。
因此,在Windows环境中创建并编译Java类文件,无需任何修改就可以将其部署到Linux环境中。
Java的这种特性,也称为可移植性,这一点使得Java开发更加方便,对于那些需要一个特定操作系统、又需要支持其他操作系统的企业来说是非常重要。
2.1.2Eclipse简介
Eclipse是一个基于Java的可扩展开发平台。
它本身只是一个框架和一组服务,用于通过插件组件构建开发环境。
Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。
Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),该组件主要是针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。
Eclipse这样功能完整且成熟的开发环境,大部分的开发掌握在IBM手中,但是有一部份是由eclipse.org的软件联盟主导。
Eclipse使用开放原始码许可书,即用公共公众许可书CommonPublicLicense(CPL)作为授权方式,设计上是可以容许商业利益的。
CPL可以容许Eclipse和其它开放原始码软件合组时,能够用更加严谨的许可书散布软件,可以用于商业途径。
CPL经过OpenSoftwareInitiative(OSI)认证,其内容符合开放原始码授权的需求。
2.2经济可行性
经济可行性分析是指进行成本与效益的核算分析,从经济角度判断开发该系统的预期经济效益能否超过它的开发成本。
当系统开发人员接受开发任务时,首要研究开发任务,判断是否具有简单明确合理可行的解决办法。
其实,有许多不可能在预期的规模内解决的问题,如果某些问题无法很好的解决,那么花费在该项工程上的任何时间、资源和经费都是浪费的。
因此可行性分析必不可少。
该系统的开发运用Java开发环境Eclipse来完成,参考图书及网上相关资料,由自己独立开发完成,在经济方面成本可自己承担,具有一定的经济可行性。
2.3社会可行性
随着计算机科技的发展,个人计算机的普及,越来越多的人们接触并使用计算机,现今普通人也能熟练地使用计算机,并习惯使用计算机通过网络进行学习工作和娱乐活动,这样更有利于人力资源的有效利用。
而且该程序的简单易用,使得人们能够使用该程序进行对弈。
3需求分析及总体设计
3.1需求分析
该程序需要实现象棋游戏的以下几个基本功能:
(1)开始游戏/重新开始:
开始一局新的象棋对弈;
(2)计时:
设置走棋时间限制和棋局的时间限制;
(3)悔棋:
将棋子返回到之前所处的位置;
(4)求和和认输:
将双方协商棋局为和棋,或一方认输结束棋局;
(5)退出:
退出本程序;
(6)提示:
显示出象棋的走棋、赢棋规则。
3.2总体设计
3.2.1总体结构设计
中国象棋软件的总体结构层次方框图如图3-1所示。
图3-1层次方框图
3.2.2棋盘棋子的设计
打开程序后显示棋盘界面如图3-2所示。
图3-2棋盘界面
棋盘是棋子的活动位置棋子活动的场所。
在长方形的平面上,由九竖线和十条横线相交组成,共有九十个交叉点,棋子摆在交叉点上。
中间部分,即棋盘的第五和第六两横线之间末画竖线的空白地带称为“楚河汉界”,也称“河界”。
两端的中间,以斜交叉线构成“米”字方格的地方,叫作“九宫”(它共有九个交叉点)。
开始游戏后调入棋子后界面如图3-3。
图3-3棋子调入界面
棋子共有三十二个,分为红、黑两组,各有十六个,由对弈的双方各执一组。
兵种是一样的,分为七种:
将(帅)、仕、象(相)、车、马、炮、卒(兵)。
红方持有棋子:
一个帅,仕、相、车、马、炮各有两个,五个兵。
黑方持有棋子:
一个将,士、象、车、马、炮各有两个,五个卒。
其中帅与将;
仕与士;
相与象;
兵与卒的作用完全相同,仅仅是区别红棋和黑棋。
3.3类图说明
该程序的所包含的类如图3-4所示,层次结构如图3-5所示。
图3-4类图
图3-5层次结构图
在图3-4中,zgxq包内的XQJFrame.java与ZGXQ.java是本程序的源代码文件;
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-1所示。
该流程图是在不悔棋、求和、认输的情况下的流程,若进行悔棋、求和等操作,则执行悔棋、求和的方法。
图4-1程序流程图
4.2开始游戏设计
打开程序后,点击开始,弹出询问对话框(如图4-2),确定后,弹出局时和步时的设置界面(如图4-3,图4-4),设置好后开始游戏(如图3-3)。
图4-2对话框
图4-3局时设置
图4-4步时设置
局时是限制一盘棋的时间,时间到时就会结束该局;
步时是限制走一步棋所用的时间,当一方走棋超时时,则认定该方放弃走棋,该方认输,对方获胜。
代码如下:
if(e.getSource()==anew){//新游戏(N)
inttemp=JOptionPane.showConfirmDialog(this,"
是否开始新游戏?
"
"
新游戏"
JOptionPane.YES_NO_OPTION);
if(temp==JOptionPane.YES_OPTION){
//或者temp==0,表示点击"
是(Y)"
;
temp==1,表示点击"
否(N)"
intcount=0;
//记录点击了几次取消或者几次没有输入值
Stringinput1=(String)JOptionPane.showInputDialog(this,
"
设定局时为(单位:
分钟,如果输入0,则表示没有局时限制):
局时设置"
JOptionPane.PLAIN_MESSAGE,null,null,"
0"
);
//输入局时
StringssJtime;
if(Jtime==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);
count++;
}elseif(Integer.parseInt(input1)<
0){//输入数值为负数
不能输入负值,局时为"
}else
Jtime=Integer.parseInt(input1)*60;
Stringinput2=(String)JOptionPane.showInputDialog(this,
设定步时为(单位:
秒钟,如果输入0,则表示没有步时限制):
步时设置"
StringssBtime;
if(Btime==0)//输入数值为0
ssBtime="
ssBtime=Btime/3600+"
+(Btime/60-Btime/3600*60)+"
+(Btime-Btime/60*60)+"
if(input2==null||input2.equals("
没有设置步时,步时为"
+ssBtime,
}elseif(Integer.parseInt(input2)<
0){//输入的数值为负值
不能输入负值,步时为"
Btime=Integer.parseInt(input2);
Game_begin();
}
4.3功能设计
4.3.1计时功能
打开游戏,再开始游戏前,进行局时和步时的设置(如图4-3,图4-4),局时是限制一盘棋的时间,时间到时就会结束该局;
局时和步时设置时,需要输入自然数,局时是分钟数,步时是秒数;
当数值设置为0时,默认为没有时间限制。
运用Thread方法定义局时、步时倒计时线程,“intJtime=0,Btime=0;
”定义局时、步时限制。
“intjtime;
intRbtime,Bbtime;
”显示双方的局时、步时的剩余时间。
用setBounds()设置双方局时、步时在界面上的显示位置。
开始游戏后,设置局时、步时,启动局时、步时倒计时线程。
当局时或步时完毕时,结束进程,并结束游戏。
4.3.2悔棋功能
悔棋,是在误操作和失误的情况下,两方协商同意后返回到之前的状态。
定义VectorVar,保存棋子的动作;
定义悔棋方法“huiqi(intn)”。
开始游戏后,当某方点击悔棋按钮时,该哪方走棋则认为是那方要求悔棋;
由另一方同意悔棋后,执行“huiqi(intn)”方法,返回到该方前一步走棋状态,继续由该方走棋,并删除Var中相应的记录。
4.3.3求和和认输
求和,是在一方认为都无法战胜对手时,提出求和,另一方同意后,判定为该局为和棋,游戏结束。
认输,是一方在走投无路,或自认为自己一定会输时,主动认输,则判定对方获胜,游戏结束。
if(e.getSource()==qiuhe){//求和(P)
Strings1=null,s2=null;
//s1表示当前走棋的玩家,s2表示另一方
if(player==1){//红方走棋,红方点的求和
s1="
红方"
s2="
黑方"
}else{//player==2,黑方走棋,黑方点的求和
}
inttemp1=JOptionPane.showConfirmDialog(this,s1+"
确认求和?
求和"
if(temp1==JOptionPane.YES_OPTION){
inttemp2=JOptionPane.showConfirmDialog(this,s1+"
求和,"
+s2
+"
是否同意和棋?
和棋"
JOptionPane.YES_NO_OPTION);
if(temp2==JOptionPane.YES_OPTION){
//一方求和,另一方同意,双方和棋,游戏结束。
Game_over();
message.setText(null);
message.setForeground(g);
message.setText("
双方和棋!
}
}elseif(e.getSource()==renshu){//认输(L)
if(player==1){//红方走棋,红方点的认输
message.setText(null);
message.setForeground(b);
}else{//player==2,黑方走棋,黑方点的认输
message.setForeground(r);
}
Game_over();
JOptionPane.showConfirmDialog(this,s1+"
认输,"
+s2+"
获胜!
获胜"
message.setText(s2+"
}
4.3.4信息帮助
信息帮助,是介绍中国象棋的基本走棋、吃棋和规则说明。
4.4界面设计
该程序界面包括:
菜单栏,信息提示,棋盘界面,计时器界面和棋子。
菜单栏包括:
开始、悔棋、求和、认输、帮助、退出。
菜单栏如图4-5所示。
菜单栏运用JMenuBar、JButton方法定义,并放置界面的顶端;
用ActionListener方法设置按键监听。
图4-5菜单栏
信息提示:
是用JLabel方法显示玩家走棋、悔棋、赢棋等信息;
置于菜单栏下面,并设置字体的类型、颜色和大小。
棋盘界面:
在菜单栏下面添加棋盘图片,设置棋盘位置(如图3-2),并添加鼠标监听。
棋盘由九竖十横的直线交叉组成,直线的交叉点称为棋点。
棋盘上共有九十个棋点,象棋子摆在和活动在这些棋点上。
棋盘中间没有线的空白地方,叫做“楚河汉界”;
划有斜交叉线的地方,叫做“九宫”。
计时器界面:
在棋盘的右侧,显示出开始游戏设置的局时和步时,并设置字体的类型、颜色和大小。
棋子:
开始游戏,通过调用棋子图片,显示在棋盘上(如图3-3);
定义数组qx[],qy[]保存棋子在棋盘上的坐标。
棋子共有三十二个,分为红棋、黑棋两组,每组各有七种,十六个,其名称和数目如下:
红棋子:
“帅”一个,“车、马、炮、相、仕”各两个,“兵”五个。
黑棋子:
“将”一个,“车、马、炮、象、士”各两个,“卒”五个。
4.5走棋和吃棋规则设计
对局时,由执红棋的一方先走,双方轮流各走一步,直至分出胜、负、和,对局即结束。
轮到走棋的一方,将某个棋子从一个交叉点移动到另一个交叉点,或者吃掉对方的棋子占领其棋点,算走了一步。
双方各走一步,称为一个回合。
走棋:
帅(将)每一步只许走一格,前进、后退、横走都可以,但不能走出“九宫”。
将和帅不允许在同一竖线上直接对面。
士每一步只许沿“九宫”斜线走一格,可进可退。
相(象)不能越过“河界”,每一步斜走两格,可进可退,即俗称“相(象)走田”。
若田字中心有棋子,则不许走过去。
马每一步走日字的对角点,可进可退,即俗称“马走日”。
如果在要去的方向有棋子挡住,俗称“蹩马腿”,不允许走过去。
车每一步沿着横线或竖线直走,不限格数。
炮在不吃棋子的时候,走法同车一样。
兵(卒)在没有过“河界”前,每步只许向前直走一格;
过“河界”后,每步可向前直走或横走一格,但不能后退。
走棋和吃棋的流程图如图4-6所示。
图4-6走棋和吃棋流程图
注:
图4-6是走棋和吃棋流程图,图中①连接总体流程。
吃棋:
走一步棋时,除炮以外,如果己方棋子可以走到的位置上有对方棋子存在,就可以把对方棋子吃掉而占领那个位置。
炮吃子时必须隔一个棋子跳吃,即俗称“炮隔山打”。
吃子的一方,把被吃掉的棋子移走。
在鼠标点击监听“mouseClicked(MouseEvente)”方法中,先单击己方棋子,并保存棋子下标Man及坐标(Manx,Many),再单击可移动位置,走棋或吃子,并保存记录。
定义“booleanMove(Ex,Ey)”方法,设置棋子移动吃子规则;
另外定义“booleanpaoEat(ix,iy)”方法定义炮吃子规则。
5系统测试与总结
5.1系统测试
系统测试是软件开发过程中非常重要的一个环节,它是衡量我们所开发系统的准则。
通过各种形式的测试以及相应的调试,使软件系统达到预定的要求。
通过对软件测试结果的分析可以预测软件的可靠性;
反之,也可以根据对软件可靠性的要求,来决定测试和调试过程什么时候可以结束。
在软件生命周期中的每个阶段都无法避免的会出现差错,只有做好软件的测试工作,才能保证软件的安全可靠性。
象棋游戏系统最好的测试方式是通过进行象棋对弈,和各个功能的执行来测试。
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知识,熟
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Java 中国象棋 游戏 设计 论文