怎样实现中国象棋怎样以我为主的走动

中国象棋的走棋_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
中国象棋的走棋
阅读已结束,下载本文需要
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢论文发表、论文指导
周一至周五
9:00&22:00
中国象棋游戏的设计与实现
  [摘要]通过对人下棋过程的分析,得出计算机行棋的整个流程以及计算机在实现人机互战中所采用的技术和知识,例如,估值函数、走法产生器、遍历算法、剪枝算法等。根据这些分析,具体地实现这些算法。但系统还有很多不完善的地方有待进一步提高。 中国论文网 /2/view-7078184.htm  [关键词]数据结构;函数;MFC;C++   [DOI]1013939/jcnkizgsc   1引言   中国象棋游戏电脑与人对战的研究最先是从国际象棋起步的,1950年美国大数学家香农经过几十年的不懈研究,终于找到了编写国际象棋程序的方法。但是近些年来经过很多中国象棋游戏编程爱好者及多个象棋开发团队的不懈努力,使得中国象棋游戏水平有了长足的进步,慢棋已经达到了业余大师的水平,快棋也可以和象棋大师进行对抗了[1]。   2游戏开发的需求分析和总体设计   要开发这样一个象棋游戏系统,首先必须对下棋的过程进行分析。图1就是对人下棋过程的一个抽象描述。用下面的图模拟人的行棋规则。   根据人的行棋规则,编程如何模拟实现下棋过程。图2给出了电脑的行棋规则。综上所述,做好一个人和电脑对战的象棋游戏需要以下几个方面:棋盘数据结构设计;棋子的行棋规则;走法产生器;棋子的价值设计及界面的优势评断;遍历算法;界面设计[2]。   3游戏的详细设计   31棋盘和棋子的实现   311棋盘的实现   一般采用9×10的二维数组作为棋盘数据结构,然而这样的话,后面判断棋子在棋盘内和对棋子走棋规则的判断需要大量的运算和规则。为了节省时间,采用空间换取时间的做法,采用16×16的棋盘数组数据结构,虽然浪费了空间,但是大大增加了效率。判断棋子是否在棋盘内可以用一个辅助的数组来实现。   312棋子表示的改变   红方棋子:一个帅,两个车,马,炮,相,士和五个兵   黑方棋子:一个将,两个车,?R,炮,象,仕和五个卒   用不同的数字来抽象表示每一种棋子,如表1所示。   33走法产生器   331车(?)的走法器设计   车(?)的走法是纵横可达,所能到达的位置广,防守攻击的点多。车的走法一般是左右上下都可以到达,可以说是勇往直前。它在一个方向所能到达的最大长度是9,因为棋盘最多是10×9的位置,所以第二层循环的判断是以9作为判断的。在遇到以下情况时不再往前走。遇到要吃对方棋子,或者说前方有对方棋子的情况,前方有自己本方的棋子,超出了棋盘边界[3]。   332炮的走法设计   炮在不吃子的情况下,和车的走法是一样的。在吃子的情况下有着“隔山打牛”的功用。因为它的走法和车的走法差不多,就是增加了一个翻山的标志。   333马的走法设计   马一共有八个方向的位置可以走,但是走的方向上不能被绊腿,否则无法走动,所以对马还设置了绊腿标志辅助数组。   334卒的走法设计   卒的走法是三个方向,过河之前只有一个方向,根据辅助数组来判断是否过河。   335相、仕、将(帅)的走法设计   相的走法要注意相田被塞,有一个辅助的,相田被塞数组。仕和将的走法简单,不再赘述。   34遍历算法的设计与实现   341遍历算法   在棋面中,当轮到一方行棋的时候,本方可能有好几十种行棋方法,然而只有其中一个被选择执行,本方无论走了哪一步棋,棋面变成另一个棋面情况了,而且轮到另一方行棋,那么另一方也有好几十种的行棋方法,然而它也只能选择其中一个行棋方法,本方在选择棋子走法的时候既要考虑本方行棋方法的好坏,而且要想到它行棋之后另一个会怎么行棋。这样产生了一个东西,那就是遍历搜索树。倘若各个局面有30个可行的走法,那么就得到一个搜索遍历的树[4]。如图3所示。   红方的棋手走棋设定为用圆形表示,黑方的棋手走棋设定为正方形表示。最底端的叶子节点是要到达的最大深度。从叶子节点得到最佳行棋走法,保存从根节点到叶子节点最佳走法的路径。然而,实际中每一方棋手每次只走一次棋,而且不一定按照我们所预先设定的走棋,所以一般只保留根节点的一步最优解。   342极大值节点和极小值节点遍历算法   从图4中可以看出,开始是红方执棋,红方会选择当前走法中使得棋面优势最大的一个,那就是8。接下来黑方走棋,黑方希望找到最小点,因为红方先执棋,所以红方已经选择了B3走法,黑方只能选择10的值了,即C7。对于红方而言,10是极大值,然而对黑方来说10是极小值,极大值和极小值是相对来说的。从上面可以看出,如果搜索深度增加的话,那么步骤应该是这样的:寻找相对最大值―寻找相对最小值―寻找相对最大值,这样依次循环直到达到所要搜索遍历的深度。   343剪枝函数的设计与实现   运用电脑强大的运算能力对整个对战树进行遍历搜索。但是遍历搜索的层数深了也是需要时间的,对10×9的棋盘进行几层遍历搜索是需要相当的时间的,极其影响效率,而且好多节点是不需要搜索的,通过裁剪遍历算法对没有用的节点分支进行裁剪,这样大大地提高效率[4]。   以下面的遍历搜索对战树为例简单介绍一下裁剪算法。在遍历到B2节点时,红方已在B1节点遍历到了当前棋面最优值8,红棋方想经过B2节点找到更加优秀的值。在遍历到C4节点时得到估值7,7也是当前B2节点的最优值。因为B2是极小值点,所以在遍历B2剩下的节点时,所有比7大的节点B2节点都不会考虑,当小于7,则取代7作为当前最优值。不管后面的节点的估值是什么,结果是B2节点的最优值不大于7。A节点找的是极大值点,A节点已经有了一个当前棋面最优值8,则A节点的最优值一定大于等于8,B2节点的值超不过7,站在A节点的立场,B2是没有用的,对B2后续节点继续进行遍历是没有意义的。所以C5、C6几点不需要进行遍历,回溯到A节点返回值,对A节点的后续其他子节点进行遍历。裁剪算法树如图5所示。   5结论   本文通过对中国象棋游戏设计与实现的思想进行分析,介绍了棋盘、棋子、走棋、走棋栈等重要数据结构。设定棋子走棋规则,满足每个棋子特定的走棋规则。探讨了走法生成器的设计与实现,对搜索遍历算法的运用。对每个棋子的价值进行拟定,对其所能到达位置的价值进行计算。系统还有很多地方有待进一步优化,例如,遍历搜索算法、剪枝算法等。这些会在以后的文章中再进行探讨。   参考文献:   [1]韩伟,任建敏,吴瑞芳基于数据库技术的中国象棋软件开局库的设计与实现[J].科学技术与工程,1998(3):556   [2]徐心和,王骄中国象棋计算机博弈关键技术分析[J].小型微型计算机系统,2006(6):3-5   [3]危春波中国象棋系统的研究与实现[D].昆明:昆明理工大学,2000   [4]袁天鑫,傅尧青中国象棋博弈程序中的树搜索算法[J].上海交通大学学报,1990(4):12-15
转载请注明来源。原文地址:
【xzbu】郑重声明:本网站资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有,如有不愿意被转载的情况,请通知我们删除已转载的信息。
xzbu发布此信息目的在于传播更多信息,与本网站立场无关。xzbu不保证该信息(包括但不限于文字、数据及图表)准确性、真实性、完整性等。象棋走法都怎么叫啊?_百度知道
象棋走法都怎么叫啊?
比如 车五进三 什么的、要详细的饿……
我有更好的答案
1 & 中国象棋,横着是10条线,竖着是9条线。因中国象棋源于古代,所以,它是从右往左数的1、2、3、、4、5、6、7、8、9 象棋的走法,不再赘述 2 &横着十条线从对方的第一条数是“前”,一直到自己的最后一条,称“后” 3 &棋谱的记录方法,是红的用中文记忆,如马五进六 黑的则是用阿拉伯数字如马5进6 4 &第一个字是代表己方的子力(即是什么棋子,如车、马、炮等) 5 &第二个字就是代表棋子的位置了,是说的竖着的9条线从右边往左边数的位置,通常情况下一条竖线上就一个本方的棋子(因为对弈的各一方除了兵卒外,就两个相同的棋子),有时也会都在一条线上这时就用前后来表示,如前马进五,那在书上你找一下自己前方的那匹马 6 & 第三个字,就是该棋子的趋向了,通常、有进、退、平。分别说明 车,炮,帅(将)有进、退、平三种走法 马,相(象),士有进、退两种走法(因是斜着走的) 兵(卒)有进、平两种走法(不能后退) 7 &第四个字就是到达的位置了 且看例子:1.马5进6,黑方从右边数第5条线上的“马”前进到第6条线上;同理象7进5也是从右边数第7条线上的“象”前进到第5条线上 8 & .将5进1,黑方从右数第五条线上的“将”前进1步,如退1就是退1步,平1就是平一步。车炮同理,如车3进1,黑方三路线(从右数第三条竖线)的车前进一步 9 &.卒7进1,黑方七路卒(七路线上的卒)前进一步 。中国象棋基本走法1 & 中国象棋一共有七种兵种,分别是车、马、炮、兵、士、相、帅。车、马、炮主要是负责进攻的棋子,而士、象是专职防守。2 &车:可以纵着走也可以横着走,所有一个车能控制的点有17个,纵的有9个,横的有8个。所有车是象棋里面最厉害的棋子。它的吃子方式和走子方式是相同的,比如说在纵线上有敌对棋子,这个时候可以吃掉。3 &马:马走“日”字,马在中间时能控制的格子有8个,成语说“马”八面威风说的就是这个意思。马在边上的时候能控制的格子就少了很多,所有我们尽量让马放在中间。马的走棋还有个规则就是“绊马脚”。4 &炮:炮的走法与车相同,但是炮的吃子方式有点特别,它必须格着一个棋子才能吃子,也就是说它要有一个炮架。5 &兵:兵有5个,位置在河界旁。兵在没过河之前只能往前走,过了河之后它就可以往左和右走。但是兵是不能往后退的,当兵走到底线的时候只能往左右走。兵的价值最好的位置是刚过河不久。如果冲到底线它的价值就降低了。6 &士:士只能在“九宫”的5个点走,走法按斜上方走或斜下方走。7 &相:相走“田”,相不能过河。相的走法有个&相眼&的走发(塞相眼)。8 &王:中国象棋的王红方叫“帅”,黑方叫“将”。王只能在“九宫”中走动,不能出去。王的走法是可以走相邻的格子。双方王不能不隔任何棋子照面。
采纳率:100%
中国象棋,横着是10条线,竖着是9条线。因中国象棋源于古代,所以,它是从右往左数的1、2、3、、4、5、6、7、8、9 象棋的走法,不再赘述 横着十条线从对方的第一条数是“前”,一直到自己的最后一条,称“后” 棋谱的记录方法,是红的用中文记忆,如马五进六 黑的则是用阿拉伯数字如马5进6 第一个字是代表己方的子力(即是什么棋子,如车、马、炮等) 第二个字就是代表棋子的位置了,是说的竖着的9条线从右边往左边数的位置,通常情况下一条竖线上就一个本方的棋子(因为对弈的各一方除了兵卒外,就两个相同的棋子),有时也会都在一条线上这时就用前后来表示,如前马进五,那在书上你找一下自己前方的那匹马 第三个字,就是该棋子的趋向了,通常、有进、退、平。分别说明 车,炮,帅(将)有进、退、平三种走法 马,相(象),士有进、退两种走法(因是斜着走的) 兵(卒)有进、平两种走法(不能后退) 第四个字就是到达的位置了 且看例子:1.马5进6,黑方从右边数第5条线上的“马”前进到第6条线上;同理象7进5也是从右边数第7条线上的“象”前进到第5条线上 2.将5进1,黑方从右数第五条线上的“将”前进1步,如退1就是退1步,平1就是平一步。车炮同理,如车3进1,黑方三路线(从右数第三条竖线)的车前进一步 3.卒7进1,黑方七路卒(七路线上的卒)前进一步 注意4.“平”的含义,均是竖线的位置,如车3平1,三路车平到第“1”条竖线;卒7平6,七路卒平到第“6”条竖线 以上记录均为中国象棋的“完整记录”。 也就是说还有简单的录法如马 5 6 - 表示马5退六(下加一横是退,上加一横是进,不加不减是平
本回答被网友采纳
你去看棋盘上面双方的两边都是有数字的,只不过一边是阿拉伯,一边是中国大写,就是根据两边数字的交叉点来说的,具体的你自己慢慢研究吧.
马走日,象走田,车炮走直线,兵一步一步走
象棋的走法介绍及其称呼如下(不是每一种走法都有俗称):1、帅(将)每着只许走一格,只能在“九宫”内(米字格)前、后、左、右移动。任何一方走之后,都不准造成帅、将在同一直线上直接对面。2、仕(士)每着只许沿“九宫”斜线走一格,可进可退。3、相(象)不能越过“河界”,每着斜走两格,可进可退,即俗称“相 (象)走田字”。当“田”字中心有棋子(无论何方)占据,俗称“塞相(象)眼”,则不许进或退。4、马每着走一直(或一横)一斜,可进可退,即俗称“马走日字”。如果在先直(横)的那个交叉点有棋子(无论何方)占据,俗称“蹩马腿”,则不许进或退。5、车每一着可以直进、直退、横走,不限格数,但不可隔子而行。6、炮的走法同车一样;吃子时必须隔一个棋子(无论何方)跳吃,即俗称“炮打隔子”。7、兵(卒)在过“河界”前,每着只许向前直走一格;过“河界”后,每着可向前直走或横走一格,但不能后退。
其他2条回答
为您推荐:
其他类似问题
象棋的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。下象棋有哪些技巧? - 知乎<strong class="NumberBoard-itemValue" title="被浏览<strong class="NumberBoard-itemValue" title="6,603分享邀请回答gzdaily.dayoo.com/html//content_1787958.htm。848 条评论分享收藏感谢收起38833 条评论分享收藏感谢收起吾额驴哈毒!投稿:11粉丝:18分享--dynmicweibozoneqqbaidu将视频贴到博客或论坛视频地址复制嵌入代码复制微信扫一扫分享收藏0硬币--稍后看马克一下~用手机看转移阵地~用或其他应用扫描二维码手机下视频请使用扫码若未安装客户端,可直接扫此码下载应用看过该视频的还喜欢正在加载...miniOFF}

我要回帖

更多关于 中国象棋每个怎样走 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信