基于android技术的中国象棋人机对弈游戏的设计与实现毕业设计论文(编辑修改稿)内容摘要:
ndroid技术的中国象棋人机对弈游戏的设计与实现 11 if(fromY != toY amp。 amp。 fromX != toX){ / /只能走直线 return false。 } if(fromY == toY){ / /走横线 if(fromX toX){ / /向右走 for(i = fromX + 1。 i toX。 i++){ / /循环 if(qizi[fromY][i] != 0){ return false。 / /返回 false } } } else{ / /向左走 for(i = toX + 1。 i fromX。 i++){ / /循环 if(qizi[fromY][i] != 0){ return false。 / /返回 false } } } } else{ / /走的是竖线 if(fromY toY){ / /向右走 for(j = fromY + 1。 j toY。 j++){ if(qizi[j][fromX] != 0) return false。 / /返回 false } } else{ / /向 左走 for(j= toY + 1。 j fromY。 j++){ if(qizi[j][fromX] != 0) return false。 / /返回 false 基于 Android技术的中国象棋人机对弈游戏的设计与实现 12 } } } break。 马:只可以走“日”字方格,因此一匹马的最理想落子点有 8个,但存在绊马腿的情况,即从马的位置到要走到的目标位置,顺着此方向,“日”字方格有两个方向,即两格长度和一个长度,马紧挨的两格长度方向的位置不能有子,否则即被绊住,不能走动。 若目标位置为空,即可走过,若为对方的棋子,即可吃掉。 图 4 .2 马的走法 红黑马规则走法的介绍: if(!(((toXfromX)==1 amp。 amp。 (toYfromY)==2) || ((toXfromX)==2 amp。 amp。 (toYfromY)==1))){ return false。 / /马走的不是日字时 } if(toXfromX==2){ / /向右走 i=fromX+1。 / /移动 基于 Android技术的中国象棋人机对弈游戏的设计与实现 13 j=fromY。 } else if(fromXtoX==2){ / /向左走 i=fromX1。 / /移动 j=fromY。 } else if(toYfromY==2){ / /向下走 i=fromX。 / /移动 j=fromY+1。 } else if(fromYtoY==2){ / /向上走 i=fromX。 / /移动 j=fromY1。 } if(qizi[j][i] != 0) return false。 / /绊马腿 break。 炮:只可以走直线,且一步可以走任意距离,其起始点与目标点之间不得存在其他棋子。 炮吃子的条件是与目标棋子在一条直线上,且两子之间必须有且只有一个棋子作为“跳板”,让炮进行跳跃式攻击。 红黑炮规则走法的介绍: 基于 Android技术的中国象棋人机对弈游戏的设计与实现 14 图 4 .3 炮的走法 if(fromY!=toY amp。 amp。 fromX!=toX){ / /炮走直线 return false。 / /返回 false } if(qizi[toY][toX] == 0){ / /不吃子时 if(fromY == toY){ / /横线 if(fromX toX){ / /向 右走 for(i = fromX + 1。 i toX。 i++){ if(qizi[fromY][i] != 0){ return false。 / /返回 false } } } lse{ / /向走走 for(i = toX + 1。 i fromX。 i++){ if(qizi[fromY][i]!=0){ return false。 / /返回 false 基于 Android技术的中国象棋人机对弈游戏的设计与实现 15 } } } } else{ / /竖线 if(fromY toY){ / /向下走 for(j = fromY + 1。 j toY。 j++){ if(qizi[j][fromX] != 0){ return false。 / /返回 false } } } else{ / /向上走 for(j = toY + 1。 j fromY。 j++){ if(qizi[j][fromX] != 0){ return false。 / /返回 false } } } } } else{ / /吃子时 int count=0。 if(fromY == toY){ / /走的是横线 if(fromX toX){ / /向右走 for(i=fromX+1。 itoX。 i++){ if(qizi[fromY][i]!=0){ count++。 } } if(count != 1){ 基于 Android技术的中国象棋人机对弈游戏的设计与实现 16 return false。 / /返回 false } } else{ / /向左走 for(i=toX+1。 ifromX。 i++){ if(qizi[fromY][i] != 0){ count++。 } } if(count!=1){ return false。 / /返回 false } } } else{ / /走的是竖线 if(fromYtoY){ / /向下走 for(j=fromY+1。 jtoY。 j++){ if(qizi[j][fromX]!=0){ count++。 / /返回 false } } if(count!=1){ return false。 / /返回 false } } else{//向上走 for(j=toY+1。 jfromY。 j++){ if(qizi[j][fromX] != 0){ count++。 / /返回 false } } 基于 Android技术的中国象棋人机对弈游戏的设计与实现 17 if(count!=1){ return false。 / /返回 false } } } } break。 卒、兵:一步只可以走过一个方格的距离。 当兵卒位于己方阵营时,只可以向前走动。 当兵卒过河后到达对方阵营,可向前、向左、向右三个方向行走,即兵卒遵循的规律是绝不后退。 图 4 .4 卒的走法 黑兵规则 走法 的介绍 if(toY fromY){ / /不能回头 return false。 / /返回 false } if(fromY5 amp。 amp。 fromY == toY){ / /过河前只能直走 基于 Android技术的中国象棋人机对弈游戏的设计与实现 18 return false。 / /返回 false } if(toY fromY +(toX fromX) 1){ / /只能走一步并 且是直线 return false。 / /返回 false } break。 ////////////////////////////////////////////////////// 红卒规则 走法 的介绍 if(toY fromY){ / /不能回头 return false。 / /返回 false } if(fromY4 amp。 amp。 fromY == toY){ / /过河前只能直走 return false。 / /返回 false } if(toY fromY +(toX fromX) 1){ / /只能走一步并且是直线 return false。 / /返回 false } break。 象、相:只可以在己方阵营走动,且仅限于 7 个点,即己方“田”字格上的 7个点,走的是斜线,走动时,起始点与目标点构成一条斜线,若该斜线的中点位置存在其他棋子,则被绊住无法走动。 基于 Android技术的中国象棋人机对弈游戏的设计与实现 19 图 4 .5 象的走法 黑象规则 走法 的介绍 if(toY 4){ / /不能过河 return false。 / /返回 false } if((fromXtoX) != 2||(fromY toY) != 2){ / /象走“田”字 return false。 / /返回 false } if(qizi[(fromY+toY)/2][(fromX+toX)/2] != 0){ / /象眼处有棋子 return false。 / /返回 false } break。 /////////////////////////////////////////////////////// 红相规则 走法 的介绍 if(toY 5){ / /不能过河 return false。 / /返回 false } if((fromXtoX) != 2||(fromY toY) != 2){ / /象走“田”字 return false。 //返回 false } if(qizi[(fromY+toY)/2][(fromX+toX)/2] != 0){ / /象眼处有棋子 return false。 / /返回 false 基于 Android技术的中国象棋人机对弈游戏的设计与实现 20 } break。 士、仕:只可以在己方阵营走动,且仅限于 5 个点,即己方棋盘上所绘的两条斜线的四个顶点和交叉点。 一步只可以走动一个方格的斜线距离。 可进可退。 图 4 .6 士的走法 黑士规则 走法 的介绍: if(toY 2 ||toX 3 || toX 5){ / /出了九宫格 return false。 / /返回 false } if((fromYtoY) !=1|| (toXfromX)!。基于android技术的中国象棋人机对弈游戏的设计与实现毕业设计论文(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。