欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    网络象棋游戏开发测试Word下载.docx

    • 资源ID:1154666       资源大小:251.19KB        全文页数:25页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    网络象棋游戏开发测试Word下载.docx

    1、 2018年 12月 15日系 主 任 签 字: 2018年 12月 16日1 设计题目与要求1.1设计题目1.2设计要求使用的开发环境是:JDK1.5及MyEclipse。黑方先走或红方先走都可。要求给每个棋子定义标准的走法规则。红黑方对弈。写出各个棋子走法的测试用例。2设计思想首先在画布上确定位置画出棋盘。象棋是双方在有着9条竖线和10条横线的棋盘上对弈,对弈的竖线与横线的交叉点称做棋点,每个棋子都是在棋点上行走而不是在方格中行走河界将棋盘分成两个等份。每一边都有一块由9个点组成的九宫棋子。将、帅、士只能在九宫内移动,并且将帅每一步只可以水平或垂直移动一个棋点。士仕),它只能在九宫内移动,

    2、并且它每一步只可以沿对角线方向移动一个棋点;象相),它必须一步沿对角线方向走两个棋点,但它既不能过河,也不能跳过或穿越障碍,即象在走的过程中不能被别眼;马馬),每一步只可以水平或垂直移动一个棋点,但必须按对角线方向,向左或右移动,象棋的马不能跳过障碍,即在走的过程中不能被别腿;车車),可以水平或垂直方向移动任意个无阻碍的点;炮,移动起来和车很类似,但它必须跳过一个棋子来吃掉对方的一个棋子,被跳过的那个棋子称为桥或者屏风;兵卒),每步只能向前移动一个棋点,过河以后,它便增加了向左右移动的能力,兵不允许向后移动。画出10条横线和9条竖线形成90个正方形边长为50)的小方格,4条对角线构成帅和将的九

    3、方格。一个和棋盘背景颜色相同的填充矩形形成红黑方的分界。然后画出棋子。首先定义棋子,用一个二维数组来初始化这些棋子。即用二维数组的值来表示棋子,如果为0,表示没有棋子;1-7表示黑方的車,馬象仕将炮卒);8-14表示红方的车马相士帅兵)。然后画棋子,两层for循环遍历棋盘中每个交叉的点,在每个点上画出适当的圆,根据初始化二维数组的对应的行和列的值来显示相应的棋子。即根据条件判断,等于0的没有棋子,在1-7之见的分别显示黑方的),在8-14之间的分别显示红方的,就实现了棋子的移动效果了。3 系统结构 系统结构流程图temp=0 temp=1 No No Yes Yes图3-1 系统结构流程图4数

    4、据结构的说明和模块的算法流程图4.1象棋游戏主要模块4.1.1主窗口模块 Chess.java 该java 文件的类负责创建中国象棋的主窗口,该文件含有 main 方法,程序从该类开始执行。 4.1.2棋盘模块 ChessBoard.java 该文件生成的类负责创建对弈棋盘对象,用户可以用鼠标拖动棋盘上棋子进行对弈,当松开鼠标时将棋子固定到棋点,该棋盘使得用户不能将棋子拖放到非棋点上,棋盘的Rule对象负责判断走棋是否遵守了象棋的规则,例如:走日,走田,小卒一去不回头等等,如果用户的走法不符合规则,棋子将不动,重新选择路线在落子。4.1.3棋点模块 ChessPoint.java 该文件生成的

    5、类负责创建棋盘的棋点对象,棋点对象可以判断该棋点上是否有棋子,可以指定当前棋点上的棋子,获取当前棋点上的棋子,移掉当前棋点上的棋子。4.1.4绘制棋子模块 ChessPiece.java 该文件生成的类负责创建棋子对象,并绘制棋子的外观,棋子对象可以获取本身的颜色、大小、名字,也可以设置和获取本身的类别-红棋或黑棋。4.1.5规则模块 Rule.java 该文件生成的类负责为创建走棋法则对象,该对象负责判断用户的走着是否遵守了中国象棋规则。4.1.6记录走棋模块 MakeStep.java 该类创建的对象负责记录一步走棋。5 使用说明5.1点击运行,显示棋盘界面,红黑双方自动摆好棋子准备对战图

    6、5-1 棋盘界面图该棋盘是由10条横线和9条竖线形成90个正方形边长为50)的小方格,并在帅和将所在的特殊位置画出相应的对角线来,中间是由一个和棋盘背景颜色相同的填充矩形形成红黑方的分界,炮和兵卒)初始化所对应的位置的棋盘背景是由相应的直线所画出来的。用一个二维数组来定义相应的棋子,用二维数组的下标来表示该棋子所在的行和列,用二维数组的值来表示相应的棋子,即0表示没有棋子,1-7表示黑方的),8-14表示红方的方法,并在paint(方法中进行判断,如果selectRow和selectCol的值发生了变化,就在变化的位置处画上相应的正方形。走棋的原理是:先选中棋子,将先前的棋子的值赋值给新的区域

    7、的值,并将原来的区域的值改为0,最后再调用repaint(实现了棋子的移动效果后就要去实现各类棋子的走法规则,即让每个棋子按照规定的法则来移动。如若棋子不是按规定走的将不会有所改变,需在重新选择有效路径。6测试用例规格说明6.1中国象棋中走马的测试用例6.1.1分析中国象棋中走马的实际情况 1.如果落点在棋盘外,则不移动棋子; 2.如果落点与起点不构成日字型,则不移动棋子; 3.如果在落点方向的邻近交叉点有棋子(绊马腿,则不移动棋子; 4.落点处有己方棋子,则不移动棋子。 5.如果不属于1-4条, 落点处无棋子,则移动棋子; 6.如果不属于1-4条, 落点处为对方棋子(非老将,则移动棋子并除去

    8、对方棋子; 7.如果不属于1-4条,且落点处为对方老将,则移动棋子,并提示战胜对方,游戏结束。6.1.2根据分析明确原因和结果原因: 1.落点在棋盘上; 2.落点与起点构成日字; 3.落点方向的邻近交叉点无棋子; 4.落点处为自己方棋子; 5.落点处无棋子; 6.落点处为对方棋子(非老将; 7.落点处为对方老将。结果:E1、不移动棋子;E2、移动棋子;E3、移动棋子,并除去对方棋子;E4、移动棋子,并提示战胜对方,结束游戏。6.1.3添加中间节点11,目的是作为导出结果的进一步原因,简化因果图导出的判定表图6-1判定表 6.1.4决策表分解图6-2决策表分解6.2兵卒)的走法规则及测试结果图走

    9、法规则:卒)没有过河时只能竖着向前面走且有且只能移动一步,当过河后可以竖着向前面走,也可以横着左右走,但是不能往后走。如下图:图6-3 没有过河可移动位置 图6-4过河后可移动的位置6.3炮的走法规则及测试结果图炮隔三打子。当炮在横纵轴方向上没有遇到障碍物时可以随意移动,一旦有障碍物出现的话,障碍物的前方必须存在有对方棋子时,才能移动到对方的棋子位置处如下图:图6-5炮走动图 6.4车車)的走法规则及测试结果图车横冲直撞。车只能在横纵轴方向上随意移动,且不能越过障碍物,如果有障碍物的话,也只能是对方的棋子所造成的障碍,此时可以移动到对方棋子所在的位置。图6-6车走动图6.4马馬)的走法规则及测

    10、试结果图马跳日。当马在横向或纵向)的方向上跳动时,如果在横向的走法规则及测试结果图相)飞田。当象相)往前方或后方)跳动时,如果在田子的中心位置没有障碍物出现,象是不能过河的。如图:图6-8相走动图6.6仕(士)的走法规则及测试模拟图仕(士)只能在九方格的对角线上行走,且每次只能移动一格。图6-9仕走动图6.7帅将)的走法规则及测试结果图帅 c=new MyCanvase(。/构造这张白纸this.add(c/将这张白纸,铺在窗体上this.setSize(500,550/设置窗体大小this.setTitle(中国象棋/设置标题栏this.setResizable(false/不能改变大小th

    11、is.setLocationRelativeTo(null/设置窗体剧中显示this.setVisible(true/设置窗体可见this.setDefaultCloseOperation(EXIT_ON_CLOSE/设置窗体的关闭方式publicstaticvoid main(String args / TODO Auto-generated method stub/创建此窗体new Gui(import java.awt.Canvas。import java.awt.Color。import java.awt.Font。import java.awt.Graphics。import jav

    12、a.awt.Point。import java.awt.event.MouseEvent。import java.awt.event.MouseListener。 * 自定义一个画布类,必须是系统Canvas类的子类 * 本类就是一个画布=一张白纸 */public class MyCanvase extends Canvas implements MouseListener /定义棋子数组,1-7(红方,8-14 /设置纸的背景颜色 this.setBackground(new Color(100,124,45 /初始化棋盘 this.addMouseListener(this this.i

    13、nit( public void init( /初始化棋盘中的棋子 /1-7(红方: 车马相士将炮兵 this.turn=1。 this.myturn=0。 this.temp=0。 this.tp=new Point(8,9 this.allChessMan00=1。 this.allChessMan01=2。 this.allChessMan02=3。 this.allChessMan03=4。 this.allChessMan04=5。 this.allChessMan05=4。 this.allChessMan06=3。 this.allChessMan07=2。 this.allCh

    14、essMan08=1。 this.allChessMan21=6。 this.allChessMan27=6。 this.allChessMan30=7。 this.allChessMan32=7。 this.allChessMan34=7。 this.allChessMan36=7。 this.allChessMan38=7。 this.allChessMan90=8。 this.allChessMan91=9。 this.allChessMan92=10。 this.allChessMan93=11。 this.allChessMan94=12。 this.allChessMan95=11

    15、。 this.allChessMan96=10。 this.allChessMan97=9。 this.allChessMan98=8。 this.allChessMan71=13。 this.allChessMan77=13。 this.allChessMan60=14。 this.allChessMan62=14。 this.allChessMan64=14。 this.allChessMan66=14。 this.allChessMan68=14。 public void fixd(int i,int j,Graphics g g.drawLine(i-8,j-16,i-8,j-8 g.

    16、drawLine(i-8,j+16,i-8,j+8 g.drawLine(i+8,j-16,i+8,j-8 g.drawLine(i+8,j+16,i+8,j+8 g.drawLine(i-16,j-8,i-8,j-8 g.drawLine(i+16,j-8,i+8,j-8 g.drawLine(i-16,j+8,i-8,j+8 g.drawLine(i+16,j+8,i+8,j+8 /屏幕上每个横向的9个点,每个竖向的10个点,都有可能出现棋子 /程序 = 数据结构 + 算法 /问题 = 用一种数据结构,把要操作的东西装起来 / + / 在这个装下了东西的口袋中怎么操作 /通过分析发现:每个

    17、点上一共有15种状态,无子|有子 /有子:1-7(红方 /横有9个点,竖有10个点,一共有90个点 /90个点=10行9列的整型数组 /棋盘上的棋子,完全依赖这个棋子数组来画 for(int row=0。row for(int col=0。col /if(this.allChessManrowcol=0/无子,不需要画什么 if(this.allChessManrowcol!=0/有子,调用画棋子方法,单独画出这个棋子 this.drawChessMan(this.allChessManrowcol, row, col, g /* * 根据数组中的值,在棋盘的相应位置,画出相应的棋子 * pa

    18、ram val:棋子的值 * param row:棋子的行坐标棋子的列坐标 public void drawChessMan(int val,int row,int col,Graphics g int x,y。 String c=。 /将数组中的下标=棋盘上的坐标 /0,0=50,50 3,1=100,200 1,2=150,100 /row=y col=x y=row*50+25。 x=col*50+25。 public Point chg(Point x/转换棋盘坐标为数组坐标 int i,tempx,tempy。 /Point k = null。 i=x.x % 50。 /System

    19、.out.println(sd+i if(i / System.out.println(wii+x.x /k.x=x.x-i。 /System.out.println(k.x tempx=x.x-i。 else tempx=x.x-i+50。 i=x.y % 50。 tempy=x.y-i。 else tempy=x.y-i+50。 tempx=tempx/50 -1。 tempy=tempy/50 -1。 Point k=new Point(tempx,tempy /k.setLocation(tempx, tempy /System.out.println(k.x+k.y return k

    20、。 /判断是否为已方棋子 public int own(Point x if(this.allChessManx.yx.x=0return 0。 else if(this.turn=0 & this.allChessManx.yx.x|(this.turn=1&this.allChessManx.yx.x7 return 1。 else return 2。 /各种棋子的移动方式 /车 public int zhu(Point x if(jg(x,this.tp=0return 1。 return 0。 /马 public int ma(Point x int i,j。 if(dist(x,th

    21、is.tp=5 i=x.x-this.tp.x。 i=i*i。 if(i=1 j=x.y+1。 if(jthis.tp.yj=x.y-1。 if(this.allChessManjthis.tp.x=0 else j=x.x+1。this.tp.xj=x.x-1。 if(this.allChessManthis.tp.yj=0 /相 public int xiang(Point x if(this.turn=0&x.y4 if(this.turn=1&x.y=8 i=x.x+this.tp.x。 j=x.y+this.tp.y。 if(this.allChessManj/2i/2=0 /士 public int shi(Point x int k。 k=dist(x,this.tp S


    注意事项

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

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开