网络象棋游戏的开发及测试
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
心之所向,所向披靡
武汉理工大学华夏学院
课程设计报告书
课程名称:软件测试综合设计
题目:网络象棋游戏的开发及测试
系名:信息工程系
专业班级:软件1091
姓名:
学号:
指导教师:司晓梅、钱小红
2013 年 1 月 4 日
课程设计任务书
学生姓名:专业班级:软件1091
指导教师:司晓梅工作单位:信息工程系
设计题目:网络象棋游戏的开发及测试
初始条件:
jdk1.5+eclipse(netbeans)
要求完成的主要任务:
用Java语言实现一个网络象棋游戏软件,并对实现后的软件进行测试。要求按照IEEE 标准模板给出具体的测试计划书、软件的黑盒测试用例规格说明,并按照测试用例进行测试,提交缺陷报告。
提示:IEEE标准测试文档模板可以参阅人民邮电出版社佟伟光主编的教材《软件测试》设计报告撰写格式要求:
1设计题目与要求
2 设计思想
3系统结构
4 数据结构的说明和模块的算法流程图
5 使用说明书(即用户手册)、运行结果、关键界面截图
6 测试计划说明书、测试用例规格说明、缺陷报告
7 自我评价与总结
8 附录:程序清单,注意加注释(包括关键字、方法、变量等),在每个模块前加
注释;
时间安排
12月24日~12月29日完成网络象棋游戏的开发、系统的打包和验收;
1月2 日~1月4日完成测试计划、测试用例的设计、测试缺陷报告的写作,并将以上工作整理成为课程设计报告,于1月4日下午提交课程设计报告。
指导教师签字:2012年12月15日
系主任签字:2012年12月16日
1 设计题目与要求
1.1设计题目
网络象棋游戏的开发及测试
1.2设计要求
用Java语言实现一个网络象棋游戏软件,并对实现后的软件进行测试。使用的开发环境是:JDK1.5及MyEclipse。黑方先走或红方先走都可。要求给每个棋子定义标准的走法规则。红黑方对弈。写出各个棋子走法的测试用例。
2 设计思想
首先在画布上确定位置画出棋盘。象棋是双方在有着9条竖线和10条横线的棋盘上对弈,对弈的竖线与横线的交叉点称做棋点,每个棋子都是在棋点上行走而不是在方格中行走河界将棋盘分成两个等份。每一边都有一块由9个点组成的九宫棋子。将、帅、士只能在九宫内移动,并且将帅每一步只可以水平或垂直移动一个棋点。士(仕),它只能在九宫内移动,并且它每一步只可以沿对角线方向移动一个棋点;象(相),它必须一步沿对角线方向走两个棋点,但它既不能过河,也不能跳过或穿越障碍,即象在走的过程中不能被别眼;马(馬),每一步只可以水平或垂直移动一个棋点,但必须按对角线方向,向左或右移动,象棋的马不能跳过障碍,即在走的过程中不能被别腿;车(車),可以水平或垂直方向移动任
意个无阻碍的点;炮,移动起来和车很类似,但它必须跳过一个棋子来吃掉对方的一个棋子,被跳过的那个棋子称为桥或者屏风;兵(卒),每步只能向前移动一个棋点,过河以后,它便增加了向左右移动的能力,兵不允许向后移动。画出10条横线和9条竖线形成90个正方形(边长为50)的小方格,4条对角线构成帅和将的九方格。一个和棋盘背景颜色相同的填充矩形形成红黑方的分界。然后画出棋子。首先定义棋子,用一个二维数组来初始化这些棋子。即用二维数组的值来表示棋子,如果为0,表示没有棋子;1-7表示黑方的("車","馬","象","仕","将","炮","卒");8-14表示红方的("车","马","相","士","帅","炮","兵")。然后画棋子,两层for循环遍历棋盘中每个交叉的点,在每个点上画出适当的圆,根据初始化二维数组的对应的行和列的值来显示相应的棋子。即根据条件判断,等于0的没有棋子,在1-7之见的分别显示黑方的("車","馬","象","仕","将","炮","卒"),在8-14之间的分别显示红方的("车","马","相","士","帅","炮","兵")。移动棋子。其实就是监听了鼠标点击相应事件,先选棋子,通过点击了某一个有效的棋子区域,就将该点转化为棋子所在的行和列,再点击其他的有效区域,将先前的棋子的值复值给新的区域的值,并将原来的区域的值改为0,最后再调用repaint(),就实现了棋子的移动效果了。
3 系统结构
系统结构流程图
4 数据结构的说明和模块的算法流程图
4.1象棋游戏主要模块
Chess.java 该java 文件的类负责创建中国象棋的"主窗口",该文件含有 main 方法,程序从该类开始执行。
ChessBoard.java 该文件生成的类负责创建"对弈棋盘"对象,用户可以用鼠标拖动棋盘上棋子进行对弈,当松开鼠标时将棋子固定到棋点,该棋盘使得用户不能将棋子拖放到非
棋点上,棋盘的Rule对象负责判断走棋是否遵守了象棋的规则,例如:"马"走日,"象"走田,小卒一去不回头等等,如果用户的走法不符合规则,棋子将不动,重新选择路线在落子。
ChessPoint.java 该文件生成的类负责创建棋盘的棋点对象,棋点对象可以判断该棋点上是否有棋子,可以指定当前棋点上的棋子,获取当前棋点上的棋子,移掉当前棋点上的棋子。
ChessPiece.java 该文件生成的类负责创建棋子对象,并绘制棋子的外观,棋子对象可以获取本身的颜色、大小、名字,也可以设置和获取本身的类别-红棋或黑棋。
Rule.java 该文件生成的类负责为创建走棋法则对象,该对象负责判断用户的走着是否遵守了中国象棋规则。
MakeStep.java 该类创建的对象负责记录一步走棋。
5 使用说明
5.1点击运行,显示棋盘界面,红黑双方自动摆好棋子准备对战
图5-1 棋盘界面图
该棋盘是由10条横线和9条竖线形成90个正方形(边长为50)的小方格,并在帅和将所在的特殊位置画出相应的对角线来,中间是由一个和棋盘背景颜色相同的填充矩形形成红黑方的分界,炮和兵(卒)初始化所对应的位置的棋盘背景是由相应的直线所画出来的。用一个二维数组来定义相应的棋子,用二维数组的下标来表示该棋子所在的行和列,用二维数组的值来表示相应的棋子,即0表示没有棋子,1-7表示黑方的("車","馬","象","仕","将","炮","卒"),8-14表示红方的("车","马","相","士","帅","炮","兵")。
5.2选择棋子,开始走棋
图5-2选棋落子
用变量temp当做一个开关来切换红黑两方走棋的顺序。初始值为0表示红方先走,红方走完后立即将该temp值改为1,当再次点击棋子时,只能使用黑方了,黑方同理。当选中一方的棋子时,将选中的当前行赋值给selectRow,将选中的当前列赋值给selectCol,然后调用repaint()方法,并在paint()方法中进行判断,如果selectRow和selectCol的值发生了变化,就在变化的位置处画上相应的正方形。
走棋的原理是:先选中棋子,将先前的棋子的值赋值给新的区域的值,并将原来的区域的值改为0,最后再调用repaint(),就实现了棋子的移动效果了。实现了棋子的移动效果后就要去实现各类棋子的走法规则,即让每个棋子按照规定的法则来移动。如若棋子不是按规