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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

象棋游戏的开发及测试.docx

1、象棋游戏的开发及测试华夏学院课程设计报告书课程名称: 软件测试综合设计 题 目: 象棋游戏的开发及测试 系 名: 信息工程系 专业班级: 姓 名: 学 号: * * * 2013 年 1 月 4 日课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 信息工程系 设计题目:象棋游戏的开发及测试初始条件: jdk1.5+MyEclipse要求完成的主要任务:用Java语言实现一个网络象棋游戏软件,并对实现后的软件进行测试。要求按照IEEE标准模板给出具体的测试计划书、软件的黑盒测试用例规格说明,并按照测试用例进行测试,提交缺陷报告。提示:IEEE标准测试文档模板可以参阅人民邮电出版社佟伟

2、光主编的教材软件测试 设计报告撰写格式要求:1设计题目与要求2 设计思想3系统结构 4 数据结构的说明和模块的算法流程图 5 使用说明书(即用户手册)、运行结果、关键界面截图6 测试计划说明书、测试用例规格说明、缺陷报告7 自我评价与总结8 附录:程序清单,注意加注释(包括关键字、方法、变量等),在每个模块前加注释;时间安排 12月24日12月29日完成网络象棋游戏的开发、系统的打包和验收;1月2 日1月4日完成测试计划、测试用例的设计、测试缺陷报告的写作,并将以上工作整理成为课程设计报告,于1月4日下午提交课程设计报告。指 导 教 师 签 字: 2012年 1 月 4日系 主 任 签 字:

3、2012年 1 月 4日课程设计报告书1.设计题目与要求1.1.设计题目 象棋游戏的开发及测试1.2.设计要求实现一个基于网络的象棋游戏,可以让两方在网上进行象棋游戏对战。红方先走,然后黑方走,交替进行。给每个棋子定义标准的走法规则。对每个棋子的走法规则进行测试,写出各个棋子走法的测试用例。3.设计思想 中国象棋是双方在有着9条竖线和10条横线的棋盘上对弈,竖线和横线的交叉称为棋点或对弈点,每个棋子都是在棋点上行走。所以要先在画布的具体位置上画出棋盘。10条横线和9条竖线形成90个正方形的小方格,4条对角线构成帅和将的九方格。一个和棋盘背景颜色相同的填充矩形形成红黑方的分界。楚河汉界将棋盘分成

4、两等份,每一边都有一块有9个点组成的九宫,棋子“将” 、“帅”和“士”只能在九宫内移动,并且“将”和“帅”每一步只可以水平或垂直移动一个棋点;“士”只能在九宫内移动,并且它每一步只可以沿着对角线移动一个棋点;“象”必须一次沿着对角线方向走两个棋点,但它不能过河也不能跳过或穿越障碍,“马”没一步只可以水平或垂直移动两个棋点,但必须按对角线向左或向右移动。中国象棋的“马”不能跳过障碍,即马不能别腿。“车”可以水平或垂直方向移动人一个无障碍的点。“炮”移动起来和车类似,但它必须跳过一个棋子来吃掉对方的一个棋子,被跳过的那个棋子称为桥或者屏风。“兵”每步只能向前移动一个棋子过河以后,它便增加了向左右移

5、动的能力,并不允许向后移动移动棋子,实际上就是监听了鼠标点击相应事件,先选棋子,通过点击了某一个有效的棋子区域,就将该点转化为棋子所在的行和列,再点击其他的有效区域,将先前的棋子的值复值给新的区域的值,并将原来的区域的值改为0,最后再调用repaint(),就实现了棋子的移动效果。4.系统结构4.1系统流程图 否 否 是 是 图1 系统运行流程图4.2模块功能定义名称功能棋盘展示棋盘排列棋子棋子共有三十二个红棋子16个黑棋子16个将黑方boss帅红方boss士士每一着只许沿九宫斜线走一步,可进可退相相(象)不能越过河界, 每一着斜走两步,可进可退,即俗称相(象)走田字。当田字中心有别的棋子时,

6、俗称塞相(象)眼,则不行走过去象相(象)不能越过河界, 每一着斜走两步,可进可退,即俗称相(象)走田字。当田字中心有别的棋子时,俗称塞相(象)眼,则不行走过去马马每着走一直(或一横)一斜,可进可退,即俗称马走日字。如果在要去方向紧靠一直(或一横)的地方,有别的棋子挡住,俗称蹩马腿,就不能走过去车车每一着可以直进、直退、横走,不限步数炮炮在不吃子的时候,走法同车一样兵兵(卒)在没有过河界前,每着只许向前直走一步;过河界后,每着可以向前走一步,也可以横走一步,但不能后退卒兵(卒)在没有过河界前,每着只许向前直走一步;过河界后,每着可以向前走一步,也可以横走一步,但不能后退将军一方的棋子攻击对方的帅

7、(将),并在下一着要把它吃掉,称为将军吃子走一着棋时,如果己方棋子能够走到的位置有对方棋子存在,就可把对棋子吃掉而占领那个位置。只有炮吃了必须隔一个棋子(无论是哪一方的)跳吃,即俗称炮打隔子。 除帅(将)外,其它棋子都可以听任对方吃,或主动送吃。和棋属于理论上公认的双方均无取胜可能的局势胜利帅(将)被对方将死失败帅(将)被将军,无法避免地同对方将(帅)直接对面5.详细设计5.1 画棋盘 该棋盘是由10条横线和9条竖线形成90个正方形(边长为50)的小方格,并在帅和将所在的特殊位置画出相应的对角线来,中间是由一个和棋盘背景颜色相同的填充矩形形成红黑方的分界,炮和兵(卒)初始化所对应的位置的棋盘背

8、景是由相应的直线所画出来的。并在棋盘相应的位置写上楚河、汉界字样。5.2 在棋盘中画棋子图2棋盘及棋子初始化界面图用一个二维数组来定义相应的棋子,用二维数组的下标来表示该棋子所在的行和列,用二维数组的值来表示相应的棋子,即0表示没有棋子,1-7表示黑方的(车 马相士将炮卒),8-14表示红方的(车马相士帅炮兵)。5.3选择棋子用一个变量temp当做一个开关来切换红黑两方走棋的顺序。初始值为0表示红方先走,红方走完后立即将该temp值改为1,当再次点击棋子时,只能使用黑方了,黑方同理。当选中一方的棋子时,将选中的当前行赋值给selectRow,将选中的当前列赋值给selectCol,然后调用re

9、paint()方法,并在paint()方法中进行判断,如果selectRow和selectCol的值发生了变化,就在变化的位置处画上相应的正方形。5.4走棋先选中棋子,通过点击了某一个有效的棋子区域,就将该点转化为棋子所在的行和列,再点击其他的有效区域,将先前的棋子的值赋值给新的区域的值,并将原来的区域的值改为0,最后再调用repaint(),就实现了棋子的移动效果了。实现了棋子的移动效果后就要去实现各类棋子的走法规则,即让每个棋子按照规定的法则来移动。6.棋子走法规则及测试6.1 兵(卒)的走法规则测试走法规则:兵(卒)在没有过河界前,每着只许向前直走一步;过河界后,每着可以向前走一步,也可

10、以横走一步,但不能后退。图3 没有过河可移动位置 图4 过河后可移动的位置6.2 炮的走法规则测试走法规则:当炮在横纵轴方向上没有遇到障碍物时可以随意移动,一旦有障碍物出现的话,障碍物的前方必须存在有对方棋子时,才能吃掉对方的棋子 图5 没有障碍物可移动位置 图6 有障碍物可移动的位置6.3车的走法规则测试 走法规则:车只能在横纵轴方向上随意移动,且不能越过障碍物,如果有障碍物的话,也只能吃掉对方的棋子。 图7 车的可移动位置 6.4马的走法规则测试走法规则:马跳日。当马在横向(或纵向)的方向上跳动时,如果在横向(纵向)的方向上没有障碍物的话,马才能跳过去,否则就跳不过去。 图8 没有障碍物可

11、移动位置 图9有障碍物时不能移动到图中位置6.5象(相)的走法规则 走法规则:象(相)飞田。当象(相)往前方(或后方)跳动时,如果在田子的中心位置没有障碍物出现,象(相)才能走动,否则它将不能移动。并且象(相)是不能过河的。6.6仕(士)的走法规则测试 走法规则:仕(士)只能在九方格的对角线上行走,且每次只能移动一格。 图12 可移动位置6.7帅(将)的走法规则测试 走法规则:帅(将)只能在九方格中的横纵轴上行走,且每次只能移动一步。 图13 可移动位置7.自我评价与总结本次课程设计主要是运用之前所学到的Java基础知识来设计一个能进行对战的中国象棋对弈系统,并且重在用本学期所学的软件测试知识

12、来进行测试。这期间我遇到了很多的困难,发现了很多的问题,正是在解决问题的期间我才慢慢地熟悉了Java的基础知识,体会为了软件开发工程中测试的重要性和必要性。 通过本次课程设计,我明白了一个道理:无论做什么事情,都必需养成严谨,认真的习惯,只有这样我们才能在工作生活的践行中少犯错误。同时,在做完了一部分任务之后还要进行从头到尾的测试,因为我们不是神,就算是神也不能确保自己永远万无一失,不管我们技术多么强,经验多么老练丰富,我们都要进过检验测试。就如马克思主义哲学里所说的,实践是检验真理的唯一标准,只有通过实践测试,才能发现潜存的问题,才能完善系统,才能创新。 对于这次设计和测试,积累了使用软件工

13、程的思想来开发软件的经验,使我受益匪浅。只有以后通过不断的努力、不断的研究和学习、不断的实践、细致耐心的测试,才能掌握更多的软件设计的技术和方法,发现潜存的细微的错误,才能设计出更好更完善的软件作品, 提升自己的能力,才能做的更好。设计过程中质疑(或答辩)记载:1、既然是两人对弈,如何实对弈这个功能? 答:在对弈过程中需要在对弈双方之间传输各类信息,抽象为各类消息。如时间规则的协定、各方的走子信息等。每方都有消息接收、消息处理和消息发送程序。一方的MessageSender与对方的OuterMsgReceiver通过接口SrConnection连接。所有接收的消息放入消息队列QzMsgQueu

14、e中,等待消息处理进程QzMessageHandler来处理。所有的消息都封装在QzMessage类对象中,消息的类型通过消息的Header类型(以静态常量存放在MsgHeader类中)来区分。2、棋子是如何实现移动的效果的?答:先选棋子,通过点击了某一个有效的棋子区域,就将该点转化为棋子所在的行和列,再点击其他的有效区域,将先前的棋子的值复值给新的区域的值,并将原来的区域的值改为0,最后再调用repaint(),就实现了棋子的移动效果了。3、你是如何进行测试的?答:在开发过程中,我主要是一边编写代码,一边看其能否运行来进行白盒测试;当程序整体开发完成后在来通过走棋的方法进行黑盒测试,为了测试

15、过程的严谨和避免自己的定式思维误区,我还叫同学一起进行二人对弈,测试各个棋子的各种走法,检验其是否符合理论上的法则,直到测试再三,才能下定论。指导教师评语:签名: 年 月 日8.附录(部分程序代码)8.1 画棋盘代码如下所示:/划横线 for(int y=50; y=500; y+=50) g.drawLine(50, y, 450, y); /划竖线 for(int x=50; x=450; x+=50) g.drawLine(x, 50, x, 500); /画斜线 g.drawLine(200, 50, 300, 150); g.drawLine(300, 50, 200, 150);

16、g.drawLine(200, 400, 300, 500); g.drawLine(300, 400, 200, 500);/画炮和兵所在位置的棋盘背景 drawZhiJiao(g, 100, 150); drawZhiJiao(g, 400, 150); drawZhiJiao(g, 150, 200); drawZhiJiao(g, 250, 200); drawZhiJiao(g, 350, 200); drawZhiJiao(g, 150, 350); drawZhiJiao(g, 250, 350); drawZhiJiao(g, 350, 350); drawZhiJiao(g,

17、 100, 400); drawZhiJiao(g, 400, 400); drawZhiJiao(g, 50, 200); drawZhiJiao(g, 450, 200); drawZhiJiao(g, 50, 350); drawZhiJiao(g, 450, 350);/*画炮和兵的背景 */ private void drawZhiJiao(Graphics g, int x, int y) if(x!=50 & x!=450) drawLeftZhiJiao(g, x, y); drawRightZhiJiao(g, x, y); else if(x=50) drawLeftZhi

18、Jiao(g, x, y); else if(x= 450) drawRightZhiJiao(g, x, y); 8.2定义棋子代码: private int selectedRow = -1, selectedCol = -1;/表示所选中的行和列和列/画棋子 for(int row=0; row10; row+) for(int col=0; col=1 & value=14) /定义画笔颜色 if(value 7) if(selectFlag = false) /第一次选中棋子 selectFlag = true; selectedCol = col; selectedRow = ro

19、w; else if(row = selectedRow & col = selectedCol)/第二次选中该棋子 selectFlag = false; selectedCol = -1; selectedRow = -1; else /选中己方的其他棋子 selectedCol = col; selectedRow = row; else /走棋 repaint();8.4走棋代码:if(selectedRow != -1) int value = chessmanselectedRowselectedCol; switch (value) case 8: if(row=selected

20、Row) /车横着走时 if(col-selectedCol) 1) /向右走 for(int i=selectedCol+1; i 1) /向左走 for(int i=selectedCol-1; icol; i-) if(chessmanrowi!=0) Obstacle+; if(Obstacle=0) if(chessmanrowcol = 5) chessmanrowcol = value; chessmanselectedRowselectedCol = 0; repaint(); JOptionPane.showMessageDialog(this, 红方已经胜利!); Syst

21、em.exit(0); else chessmanrowcol = value; chessmanselectedRowselectedCol = 0; temp = 1; Obstacle = 0; if(col=selectedCol) /车竖着走时 if(row-selectedRow) 1) /向下走 for(int i=selectedRow+1; i 1) /向上走 for(int i=selectedRow-1; irow; i-) if(chessmanicol != 0) Obstacle+; if(Obstacle=0) if(chessmanrowcol = 5) che

22、ssmanrowcol = value; chessmanselectedRowselectedCol = 0; repaint(); JOptionPane.showMessageDialog(this, 红方已经胜利!); System.exit(0); else chessmanrowcol = value; chessmanselectedRowselectedCol = 0; temp = 1; Obstacle = 0; break; case 9: break;case 10: break;case 11: break;case 12: break;case 13: break;case 14: break;

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

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