• 当前位置:创业找项目 > 范文大全 > 象棋中不会出现的走法
  • 象棋中不会出现的走法

  • 来源:创业找项目
  • 时间:2018-05-06
  • 移动端:象棋中不会出现的走法
  • 篇一:象棋中马的走法

    实验三、国际象棋中马的走法

    利用C语言,解决象棋中马走向问题的程序。可以自定义一个n*n的棋盘,给出马在棋盘的初始位置,紧接着进行搜索路径,按照有最少出口数的出口进行,一直将所有的位置搜索到,如果结束,则从第二步开始重新寻找搜索路径开始搜索,知道棋盘上所有的位置都遍历到。

    解答参考:

    程序代码:

    #include<stdio.h>

    #define N 100

    int n;

    int deltai[]={2,1,-1,-2,-2,-1, 1, 2};

    int deltaj[]={1,2, 2, 1, -1,-2,-2,-1};

    int board[N][N];

    int exitn(int i,int j,int s,int a[]) /*求(i,j)的出口数,s是顺序选择马的可走方法的开始序号*/

    {

    int i1,j1,k,count;

    for (count=k=0;k<8;k++)

    {

    i1=i+deltai[(s+k)%8];

    j1=j+deltaj[(s+k)%8];

    if(i1>=0 && i1<n && j1>=0 && j1<n && board[i1][j1]==0) a[count++]=(s+k)%8;

    }

    return count;

    }

    int next(int i,int j,int s) /*选择下一出口*/

    {

    int m, k,kk,min;

    int a[N],b[N],temp;

    m=exitn(i,j,s,a);/*确定(i.j)的出口个数*/

    if(m==0) return -1; /*没有出口*/

    for(min=9,k=0;k<m;k++) /*逐一考察各出口*/

    {

    temp=exitn(i+deltai[a[k]],j+deltaj[a[k]],s,b);

    if(temp<min)/*找出有最少出口数的出口*/ {

    min=temp;

    kk=a[k];

    }

    }

    return kk; /*返回选中的马的可走方法*/} int show(int i,int j)

    { int m;

    for(i=0;i<n;i++)

    {

    for(m=0;m<n;m++)

    printf("|——");

    printf("|\n");

    for(j=0;j<n;j++)

    printf("|%3d ",board[i][j]);

    printf("|\n");

    }

    for(m=0;m<n;m++)

    printf("|——");

    printf("|\n");

    }

    void main()

    {

    int i,j,step,no,start=0;/*从0号马的可走方法开始顺序检查*/printf("请输入棋盘的大小:\n");

    scanf("%d",&n);

    printf("请输入马的初始位置:\n");

    scanf("%d%d",&i,&j);

    board[i][j]=1;

    getchar();

    printf("马走第1步!\n");

    show(i,j);

    do

    {

    for(step=2;step<=n*n;step++)

    {

    if((no=next(i,j,start))==-1)

    break;

    i+=deltai[no]; /*前进一步*/

    j+=deltaj[no];

    board[i][j]=step;

    getchar();

    printf("马走第%d步!\n",step);

    show(i,j);

    }

    if(step>n*n) break;

    start++;

    } while(step<=n*n); /*最先检查的马的可走方法序号增1*/}

    篇二:中国象棋开局的15种走法

    中国象棋开局的15种走法

    开局第一着的15种走法

    1)当头炮(炮二平五)

    这是象棋布局里的主流招法,直接威胁黑方中卒,刚猛直爽。“起炮在中宫,比诸局较雄”。黑方通常跳马保卒或还架中炮,发展成为顺炮、列炮、屏风马、反宫马、单提马等体系。也有进炮保卒或补士象的冷门应法,中炮的应法最多有十种。

    2)飞相局(相三进五)

    稳健型开局,先巩固阵地,再伺机反击。飞相局曾是胡荣华的镇山宝,杀败过许多弈林好手,他说“飞相十八应”,说明了应法之多。因为飞相没有对黑方构成任何直接威胁,所以除常见的左中炮、过宫炮、士角炮外,至少还有十几种可行的应法,甚至挺中卒都是不违棋理的。

    3)仙人指路(兵七进一)

    投石问路,既可为马开路,又可试探对方棋路,刚柔相济,意向莫测。应对仙人指路最凶悍的莫过于炮2平3卒底炮,平地一声雷。另外,飞象、左中炮、对兵局、过宫炮、起马等等也屡见不鲜,最有趣的是卒3进1弃卒抢三先,俗称“瞎眼狗”。

    4)起马局(马二进三)

    一匹正马是迟早要跳的,开盘就跃出,何乐而不为?有棋友在“华工象棋论坛”论证了起马局红方总比黑方快半拍,以后还可多得两兵终获胜。这位棋友的观点虽不完善,但此人无疑是起马局的能手。其实后手方并不惧怕,一步卒7进1制马就很有针对性,其它还有许多应法当然也未尝不可。

    5)过宫炮(炮二平六)

    流行弈法,有利于上马出车,迅速开动主力,结构良好,攻守咸宜。黑方有飞象、还中炮、挺卒、进马、提横车等多种应法。过宫炮古已有之,数百年不断演绎着新的传奇。

    6)仕角炮(炮八平六)

    首着平炮于仕角,今后可发展成反宫马、单提马、五六炮等阵型。后手还架反手中炮或挺卒较为流行。

    7)上仕局(仕四进五)

    既然飞相可以,上仕又有何不妥?同样巩固阵地,还有再架中炮的机会。记得有一次亚洲大赛上就有专业棋手使用过。

    8)兵底炮(炮二平三)

    有很多布局的红棋阵容会有这一步炮,这里只是改变次序先为之。古谱称之“敛炮”,有锋芒内敛之意。

    9)金钩炮(炮二平七)

    有的称为“大过宫炮”,将子力集中于左翼,又为右翼子力开通道路。特级大师庄玉庭对此阵颇有研究。

    10)边马局(马二进一)

    冷门布局,偶尔用之会有出其不意的效果。当然另一个马还是扑向中心较好,如果再马八进九形成“蝴蝶双飞”就感觉不怎么舒坦了(事实上还是有人喜欢这么走,并配合担子炮,让人觉得无懈可击)。

    11)九尾龟(兵九进一)

    和边马局一样,旁敲侧击的战略思想。记得多年前,我看过《京华棋坛风云录》中有一则名手对局就用的这个。

    12)巡河炮(炮二进二)

    在让双马时,这着几乎是必走的。在不让子的情况下,巡河炮同样有拦车,闪击等多种用途。所谓“沿河十八打,将军拉下马”。

    13)边炮(炮二平一)

    “炮起边塞上,翻卒势如飞,横贯当头妙,冲前落角宜……”。边炮还可以为车马让路,形成先手三步虎。

    14)龟背炮(炮八退一)

    这个名称是来源于“中炮对龟背炮”。记得读大学时寝室里下棋曾一度流行这种走法,甚至有同学用得得心应手,还总结出退炮后的几种后续手段(如保马前卒,打车,平窝心炮),现在回忆起来还觉得饶有趣味。

    15)过河炮(炮二进四)

    屏风马世界里有左炮封车,双炮过河等阵容。首着就过河,似乎动向暴露过早,但民间确实有人执先手这么走,好象一时也找不到什么明显弱点。

    16)铁滑车(车一进一)

    属于邪门开局,开局的时候会死马,之后就反攻,饶有趣味的!!!

    篇三:中国象棋基本走法口诀

    中国象棋基本走法口诀

    编者 张孔銮

    将帅田中横竖走,被吃便成输棋手; 士在两旁斜线走,保护将帅不远走; 相象田间对角走,田中有子不得走; 小马日字对角走,直前有子不得走; 老車横竖任你走,遇谁吃谁称勇首; 大炮横竖也任走,隔子方能吃对手; 兵卒只能往前走,过河方能左右走。 各子路上遇对手,吃时要防对手走;

    吃人将帅喊 “将军”,输棋不气是好手。


    象棋中不会出现的走法》由:创业找项目整理
    链接地址:http://www.gjknj.com/duwu/12741.html
    转载请保留,谢谢!
  • 下一篇:象棋开局基本走法