篇一:象棋中马的走法
实验三、国际象棋中马的走法
利用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://m.csmayi.cn/duwu/12741.html
转载请保留,谢谢!
- 上一篇:大班室内体育运动
- 下一篇:象棋开局基本走法