中国象棋C代码Word格式.docx
- 文档编号:20698087
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:18
- 大小:21.84KB
中国象棋C代码Word格式.docx
《中国象棋C代码Word格式.docx》由会员分享,可在线阅读,更多相关《中国象棋C代码Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
卒"
//下棋子时判断多一个空位合法
charcheck[3];
voidckm1(char*tp,char*tp1,char*tn,char*tn1,int*num,int*if_ov,charmap[100][100])
{//象棋函数判断将方下棋是否合法
check[0]=*tp;
check[1]=*tp1;
check[2]='
\0'
;
chara,b;
for(i=0;
i<
8;
i++)
{if(strcmp(ck_2[i],check)==0)
{*tp=*tn;
*tp1=*tn1;
*tn='
*tn1='
if(i<
7){printf("
将方的%s被吃"
ck_2[i]);
Sleep(500);
}
*num=*num+1;
for(k=4;
k<
=8;
k=k+2)//判断将是否死亡
{for(j=15;
j<
=23;
j=j+4)
{if(map[k][j]==ck_2[4][0]&
&
map[k][j+1]==ck_2[4][1])
{px2=k;
py2=j;
break;
}
if(j<
=23)break;
}
if(k==10)
{printf("
将被将死帥方获得胜利\n"
);
printf("
按任意键返回菜单"
getch();
*if_ov=1;
return;
}
for(k=18;
=22;
k=k+2)//判断帥是否死亡
{for(j=15;
{if(map[k][j]==ck_1[4][0]&
map[k][j+1]==ck_1[4][1])
{px1=k;
py1=j;
}
if(j<
if(k==24)
帥被将死将方获得胜利\n"
return;
if(py1==py2)
{for(k=px2+2;
=px1-2;
k=k+2){if(map[k][py1]!
='
+'
)break;
}
if(k==px1)
{if(round==1)printf("
帥方对将将方胜利"
elseif(round==2)printf("
将方对将帥方胜利"
printf("
getch();
}
break;
}
}//for(i=0;
i++)循环结束
if(i==8){printf("
不合法的走法\n"
Sleep(500);
voidckm2(char*tp,char*tp1,char*tn,char*tn1,int*num,int*if_ov,charmap[100][100])
{//象棋函数判断帥方下棋是否合法
{if(strcmp(ck_1[i],check)==0)
{*tp=*tn;
*tp1=*tn1;
*tn='
*tn1='
if(i<
7){printf("
帥方的%s被吃"
ck_1[i]);
*num=*num+1;
for(k=4;
k=k+2)//判断将是否死亡
{for(j=15;
{if(map[k][j]==ck_2[4][0]&
{px2=k;
if(k==10)
printf("
*if_ov=1;
for(k=18;
{px1=k;
if(k==24)
*if_ov=1;
if(py1==py2)
if(k==px1)
elseif(round==2)printf("
printf("
}
}
if(i==8){printf("
voidxiangqi()//象棋主程序
{charmap[100][100]={"
[[===================================]]"
"
[|①帥【象棋】②将|]"
[[-----------------------------------]]"
[[车—-马—-象—-士—-将—-士—-象—-马—-车]]"
[[||||\\|/||||]]"
[[+-—-+-—-+-—-+-—-+-—-+-—-+-—-+-—-+-]]"
[[||||/|\\||||]]"
[[+-—-炮—-+-—-+-—-+-—-+-—-+-—-炮—-+-]]"
[[|||||||||]]"
[[卒—-+-—-卒—-+-—-卒—-+-—-卒—-+-—-卒]]"
[[兵—-+-—-兵—-+-—-兵—-+-—-兵—-+-—-兵]]"
[[+-—-砲—-+-—-+-—-+-—-+-—-+-—-砲—-+-]]"
[[||||/|\\||||]]"
[[車—-馬—-相—-仕—-帥—-仕—-相—-馬—-車]]"
intif_ov=0;
system("
modeconcols=42lines=32"
//迷你界面
color70"
[[==================================]]\n"
[[--------------------------------]]\n"
[[||]]\n"
[[|【<
<
游戏规则>
>
】|]]\n"
[[|------------------------------|]]\n"
[[|控制wasd双方轮流控制指针下棋|]]\n"
[[|键盘输入大小写‘M’|]]\n"
[[|都视为确认下棋|]]\n"
[[|为了方便区分棋子|]]\n"
[[|先手方全设为繁体复杂字体|]]\n"
[[|我已阅读规则,按任意键继续|]]\n"
getch();
//迷你界面
for(i=0;
27;
i++){puts(map[i]);
Sleep(100);
x=6,y=19;
tp=map[x][y];
tp1=map[x][y+1];
while(num)
{if(num%2==1&
num/2%2==0){printf("
现在是'
帥'
的回合\n"
round=1;
elseif(num%2==1){printf("
现在轮到'
将'
的回合了\n"
round=2;
ch=getch();
if(ch=='
s'
)//下移
{if(map[x+1][y]!
-'
)
{map[x][y]=tp;
map[x][y+1]=tp1;
x=x+2;
map[x][y]=tn;
map[x][y+1]=tn1;
elseif(ch=='
a'
)//左移
{if(map[x][y-1]!
='
'
y=y-4;
w'
)//上移
{if(map[x-1][y]!
x=x-2;
d'
)//右移
{if(map[x][y+2]!
]'
y=y+4;
tp1=map[x][y+1];
elseif(ch=='
m'
||ch=='
M'
)//M确认要移动的棋子,或确认要移到的目的地
{if(num%2==1&
tp!
&
tp1!
)//取子
{check[0]=tp;
check[1]=tp1;
if(round==1)
{for(i=0;
7;
i++)//将方
{if(strcmp(ck_1[i],check)==0)
{tn=tp;
tn1=tp1;
tp='
tp1='
ck_x=x;
ck_y=y;
ck_t=10+i;
num++;
break;
if(i==7){printf("
这不是你的棋子\n"
elseif(round==2)
{for(i=0;
i++)//帅方
{if(strcmp(ck_2[i],check)==0)
ck_t=20+i;
elseif(num%2==0)//放子
{charck_1[8][3]={"
charck_2[8][3]={"
俥"
軳"
//中界楚河上下坐标1215往下2往右4
if(ck_t<
20)
{if(ck_t==10)//车的走法规范(将方)
{if((x==ck_x&
y==ck_y))
{tp=tn;
tp1=tn1;
tn='
tn1='
num--;
三思而后行\n"
还是你的回合"
}
elseif(y==ck_y)
{if(x>
ck_x)
{for(j=ck_x+2;
x;
j=j+2)
{if(map[j][y]=='
else{printf("
不合法的下法\n"
}
if(j>
=x)ckm1(&
tp,&
tp1,&
tn,&
tn1,&
num,&
if_ov,map);
}
if(x<
{for(j=ck_x-2;
j>
j=j-2)
if(j<
}
elseif(x==ck_x)
{if(y>
ck_y)
{for(j=ck_y+4;
y;
j=j+4)
{if(map[x][j]=='
else{printf("
}
=y)ckm1(&
if(y<
{for(j=ck_y-4;
j=j-4)
{if(map[x][j]=='
else{printf("
if(j<
else{printf("
if(ck_t==11)//马的走法规范
{if((x==ck_x&
{tp=tn;
printf("
elseif((abs(x-ck_x)==2&
abs(y-ck_y)==8)&
map[ck_x][(y+ck_y)/2]=='
{ckm1(&
elseif((abs(x-ck_x)==4&
abs(y-ck_y)==4)&
map[(x+ck_x)/2][ck_y]=='
)
else{printf("
Sleep(500);
if(ck_t==12)//相的走法规范
elseif(x>
=15&
(abs(y-ck_y)==8&
abs(x-ck_x)==4))
{if((x==22&
(y==11||y==27))||(x==18&
(y==3||y==19||y==35))||(x==14&
(y==11||y==27)))
{if(map[(x+ck_x)/2][(y+ck_y)/2]=='
ckm1(&
else{printf("
棋子卡住,不可执行"
else{printf("
else{printf("
if(ck_t==13)//士的走法规范
{if((x==ck_x&
elseif(abs(x-ck_x)==2&
abs(y-ck_y)==4&
((x==22&
(y==15||y==23))
||(x==20&
y==19)||(x==18&
(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中国象棋 代码