急需用c语言写c语言中国象棋棋的代码,只要红色方布局和走棋

【C语言天地】我用C语言编的中国象棋
笔者在象棋中的计算机思想及算法:
1.每一个棋子对应一个2维坐标。每一个棋子都对应一个值,没有棋子的地方值为0。
例如:左边的“车”初始坐标为(1,1)表示其在第一行第一列。
&&&&&&&&&&&&&&&&
左边的“车”值为11,右边的“车”为12;
&&&&&&&&&&&&&&&&
左边的“马”值为21,右边的“马”为22;
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&
每一个值有它相同的地方也有区分的地方。
2.每一个棋子都对应一个函数,当要显示它的时候就调用该函数。要在哪个地方落棋就与哪个地方的棋子的值交换。
- 【C语言天地】我用C语言编的中国象棋_hybswan_新浪博客
3.象棋有一定的规则,我们要把规则转化为数学算法。
“车”走的时候,横纵坐标必需有一个是相等的,而且在连接它们的线上所有棋子的值必需为0 。
“炮”与上一样,但在连接它们的线上所有棋子的值必需有且只有一个不为0 。
&&&“马”走的时候,始末位置的横纵坐标差的平方必需是5.而且满足(qi[(x0+X)/2][y0]!=0
)或(qi[x0][(y0+Y)/2]!=0 )
&&&“士”走的时候,始末位置的横纵坐标差的平方必需是2
。而且(x,y)必需在其能活动的行和列的范围中。
“帅和兵”走的时候,始末位置的横纵坐标差的平方必需是1 。而且(x,y)必需在其能活动的行和列的范围中。
部分代码见下:(预期效果图见顶部)
(注,这段代似乎不能在VC++中运行。笔者用的是TC3.0
。生成的EXE文件要与ATT.BGI,CGA.BGI,EGAVGA.BGI,HERC.BGI,PC3270.BGI,IBM8514.BGI这几个文件放在一起才能正常运行(这几个文件和显卡有关)。不能在WIN7上运行。
#include"graphics.h"
#include"conio.h"
#include"stdio.h"
void qipan()
{ int x,y;setcolor(RED);
line(20,20,425,20);
line(20,380,425,380);
for(x=20;x&=425;x+=45)
line(x,20,x,380);
for(y=20;y&=380;y+=45)
& line(20,y,200,y);
& line(245,y,425,y);
void qizi(int x,int y,int color)
& setcolor(color);
& setfillstyle(1,color);
& sector(x,y,360,360,20,20);
void xian(int X,int Y,int color)
{int y=(X-1)*45+20,x=(Y-1)*45+20;
&setcolor(color);
&line(x-19,y-19,x-19,y-7);
&line(x-19,y-19,x-7,y-19);
&line(x+19,y-19,x+7,y-19);
&line(x+19,y-19,x+19,y-7);
&line(x-19,y+19,x-19,y+7);
&line(x-19,y+19,x-7,y+19);
&line(x+19,y+19,x+19,y+7);
&line(x+19,y+19,x+7,y+19);
&void bu(int X,int Y)
{int x,y;setcolor(RED);
&y=(X-1)*45+20;x=(Y-1)*45+20;
&switch(X)
& {case 1:line(x,y,x,y+20);
&case 9:line(x,y,x,y-20);
&default:line(x,y,x,y+20);line(x,y,x,y-20);
&switch(Y)
& {case 1:line(x,y,x+20,y);
&case 5:line(x,y,x-20,y);
&case 6:line(x,y,x+20,y);
&case 10:line(x,y,x-20,y);
&default:line(x,y,x-20,y);line(x,y,x+20,y);
void zhu(int x,int y)
&line(x-10,y-10,x+8,y-10);
&line(x-9,y,x+8,y);
&line(x-9,y+1,x,y-14);
&line(x-11,y+5,x+9,y+5);
&line(x,y-8,x,y+15);
void ma(int x,int y)
&line(x-4,y,x+10,y);
&line(x-4,y,x-4,y-10);
&line(x-6,y-12,x+5,y-12);
&line(x+5,y-12,x+5,y-2);
&line(x+10,y,x+9,y+10);
&line(x+9,y+10,x+5,y+8);
&line(x+7,y+6,x-7,y+6);
void xiang(int x,int y)
&line(x,y-10,x,y+10);
&line(x,y-10,x+6,y-10);
&line(x,y+10,x+6,y+10);
&line(x,y-3,x+6,y-3);
&line(x,y+4,x+6,y+4);
&line(x+6,y-10,x+6,y+10);
&line(x-2,y-4,x-10,y-4);
&line(x-6,y-10,x-6,y+10);
&line(x-6,y-4,x-10,y+4);
&line(x-6,y-4,x-2,y+4);
void shi(int x,int y)
&line(x-10,y-4,x+10,y-4);
&line(x-7,y+10,x+7,y+10);
&line(x,y-10,x,y+10);
void jiang(int x,int y)
{line(x-2,y-5,x+10,y-5);
&line(x+4,y-12,x+4,y+12);
&line(x-2,y-5,x-2,y+6);
&line(x+10,y-5,x+9,y+6);
&line(x+9,y+6,x+7,y+4);
&line(x-4,y-10,x-4,y+5);
&line(x-4,y+5,x-8,y+10);
&line(x-6,y-5,x-6,y+5);
void pao(int x,int y)
{line(x,y,x+4,y);
&line(x,y-4,x,y+6);
&line(x+4,y,x+4,y-4);
&line(x+4,y-4,x,y-4);
&line(x,y+6,x+8,y+6);
&line(x+8,y+6,x+6,y+4);
&line(x+1,y-8,x+6,y-8);
&line(x+6,y-8,x+6,y);
&line(x+2,y-10,x-2,y-6);
&line(x-6,y-10,x-6,y+2);
&line(x-6,y-4,x-2,y-10);
&line(x-6,y+2,x,y+6);
&line(x-6,y+2,x-8,y+5);
&line(x-8,y-4,x-8,y-6);
void bing(int x,int y)
&line(x-5,y-5,x+6,y-5);
&line(x-5,y-8,x-5,y+3);
&line(x-8,y+4,x+8,y+4);
&line(x+4,y+4,x+4,y-5);
&line(x-5,y-8,x,y-12);
&line(x-5,y+6,x-8,y+10);
&line(x+5,y+6,x+8,y+10);
void main()
x,y,X=1,Y=1,qi[10][11],d,driver=VGA,mode=VGAHI,k,x0,y0,p=0,qi0,a1=0,a2=0,a3=0,T=0;
initgraph(&driver,&mode,"");
for(Y=1;Y&=10;Y++)
& {for(X=1;X&=9;X++)
{qi[X][Y]=0;
qi[1][1]=11;qi[1][4]=71;qi[1][7]=72;qi[1][10]=12;
qi[2][1]=21;qi[2][3]=61;qi[2][8]=62;qi[2][10]=22;
qi[3][1]=31;qi[3][4]=71;qi[3][7]=72;qi[3][10]=32;
qi[4][1]=41;qi[4][10]=42;
qi[5][1]=51;qi[5][4]=71;qi[5][7]=72;qi[5][10]=52;
qi[6][1]=41;qi[6][10]=42;
qi[7][1]=31;qi[7][4]=71;qi[7][7]=72;qi[7][10]=32;
qi[8][1]=21;qi[8][3]=61;qi[8][8]=62;qi[8][10]=22;
qi[9][1]=11;qi[9][4]=71;qi[9][7]=72;qi[9][10]=12;
setbkcolor(GREEN);
setcolor(5);
for(Y=1;Y&=10;Y++)
for(X=1;X&=9;X++)
{y=(X-1)*45+20;x=(Y-1)*45+20;
&if (qi[X][Y]!=0
&& qi[X][Y]%10==1)
qizi(x,y,RED);
&if (qi[X][Y]!=0
&& qi[X][Y]%10==2)
qizi(x,y,BLUE);
&if ((qi[X][Y])%10==1) setcolor(1);
&if ((qi[X][Y])%10==2) setcolor(3);
&d=(qi[X][Y])/10;
&if(d==1) zhu(x,y);
&if(d==2) ma(x,y);
&if(d==3) xiang(x,y);
&if(d==4) shi(x,y);
&if(d==5) jiang(x,y);
&if(d==6) pao(x,y);
&if(d==7) bing(x,y);
X=1;Y=1;p=1;
xian(X,Y,YELLOW);
loop :k=getch();
xian(X,Y,GREEN);
if(k==80) X=X+1;
if(k==72) X=X-1;
if(k==77) Y=Y+1;
if(k==75) Y=Y-1;
if(k==27) {gotoxy(25,15);printf("THANK
YOU!");getch();exit(0);}
if(Y&10) Y=1;
if(Y&1) Y=10;
if(X&9) X=1;
if(X&1) X=9;
xian(X,Y,YELLOW); gotoxy(61,5);printf("%d,%d,%d,%d
",p,X,Y,qi[X][Y]);
if (k==13) p++;
if (p&1) p=0;
if (k==13) y=(X-1)*45+20;x=(Y-1)*45+20;
(k==13&&p==0&&qi[X][Y]!=0)
&{x0=X;y0=Y;qi0=qi[X][Y];
&qizi(x,y,GREEN);
&if (qi[X][Y]%10==1)
qizi(500,40,RED);
&if (qi[X][Y]%10==2)
qizi(500,40,BLUE);
&if ((qi[X][Y])%10==1) setcolor(1);
&if ((qi[X][Y])%10==2) setcolor(3);
&d=(qi[X][Y])/10;
&if(d==1) zhu(500,40);
&if(d==2) ma(500,40);
&if(d==3) xiang(500,40);
&if(d==4) shi(500,40);
&if(d==5) jiang(500,40);
&if(d==6) pao(500,40);
&if(d==7) bing(500,40);
&bu(X,Y);qi[X][Y]=0;T=1;
(k==13&&p==1&&T!=0)
&{d=(qi0)/10;
&qi[X][Y]=qi0;
&qizi(500,40,GREEN);
&if (qi0%10==1) qizi(x,y,RED);
&if (qi0%10==2) qizi(x,y,BLUE);
&if (qi0%10==1) setcolor(1);
&if (qi0%10==2) setcolor(3);
&d=qi0/10;
&if(d==1) zhu(x,y);
&if(d==2) ma(x,y);
&if(d==3) xiang(x,y);
&if(d==4) shi(x,y);
&if(d==5) jiang(x,y);
&if(d==6) pao(x,y);
&if(d==7) bing(x,y);
&a1=0;a2=0;a3=0;T=0;qi0=0;
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
中国象棋C语言源代码
下载积分:800
内容提示:中国象棋C语言源代码
文档格式:DOC|
浏览次数:265|
上传日期: 15:28:16|
文档星级:
全文阅读已结束,如果下载本文需要使用
 800 积分
下载此文档
该用户还上传了这些文档
中国象棋C语言源代码
关注微信公众号9被浏览1464分享邀请回答06 条评论分享收藏感谢收起1添加评论分享收藏感谢收起写回答

我要回帖

更多关于 中国象棋c语言代码 的文章

 

随机推荐