今天突然翻到了大一上学期的c语言中国象棋大作业,想到这已经是我的编程水平巅峰,不由得心生悲哀,只好发出来记录一下.

零、前言

本程序已知的缺陷有:未能实现将/帅不能相对这一规则,其他bug暂时未知,建议知道了也不要告诉我,如果是大一的我,可能会积极地改一下,可现在我大二了,只知道一天要吃三顿.

另外,代码是用mac写的,所以应该会有window版bug数量>=mac版.

一、mac版

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<unistd.h>
#include<string.h>
#define N printf("\n");
#define C system("clear");
#define P(x,y) word_pointer[x][y]
#define JIANG printf("将方回合");
#define SHUAI printf("帥方回合");int i,j,k,l,m,n;
int judge_piece(char *a);
int judge_win(char *a[][11],char *t){m=n=0;if(judge_piece(t)==5) m=1;if(judge_piece(t)==12) n=1;for(i=0;i<10;i++)for(j=0;j<11;j++)if(judge_piece(a[i][j])==5)m=1;else if(judge_piece(a[i][j])==12)n=1;if(m==1&&n==0) return 1;else if(m==0&&n==1) return -1;else return 0;
}//jiang_shuai(word_pointer,t,cursor_pos[1])==0
//一段可能会多次用到的代码:
/*if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;*/
int judge_camp(char *a){int i;if(!strcmp(a,"车 ")) i=1;else if(!strcmp(a,"马 ")) i=2;else if(!strcmp(a,"象 ")) i=3;else if(!strcmp(a,"士 ")) i=4;else if(!strcmp(a,"将 ")) i=5;else if(!strcmp(a,"炮 ")) i=6;else if(!strcmp(a,"兵 ")) i=7;else if(!strcmp(a,"車 ")) i=8;else if(!strcmp(a,"馬 ")) i=9;else if(!strcmp(a,"相 ")) i=10;else if(!strcmp(a,"仕 ")) i=11;else if(!strcmp(a,"帥 ")) i=12;else if(!strcmp(a,"砲 ")) i=13;else if(!strcmp(a,"卒 ")) i=14;else return 0;switch(i){case 1 ... 7:return 1;break;case 8 ... 14:return -1;break;default:return 0;}
}int judge_piece(char *a){int i;if(!strcmp(a,"车 ")) i=1;else if(!strcmp(a,"马 ")) i=2;else if(!strcmp(a,"象 ")) i=3;else if(!strcmp(a,"士 ")) i=4;else if(!strcmp(a,"将 ")) i=5;else if(!strcmp(a,"炮 ")) i=6;else if(!strcmp(a,"兵 ")) i=7;else if(!strcmp(a,"車 ")) i=8;else if(!strcmp(a,"馬 ")) i=9;else if(!strcmp(a,"相 ")) i=10;else if(!strcmp(a,"仕 ")) i=11;else if(!strcmp(a,"帥 ")) i=12;else if(!strcmp(a,"砲 ")) i=13;else if(!strcmp(a,"卒 ")) i=14;else return 0;return i;
}int main()
{
//第一部分:准备阶段time_t time_1,*time_2=&time_1;clock_t clock_1,clock_2;time(time_2);char c1,c2,*t,cursor[14]="0  ",*c5,c6[100];struct tm tm_1,*tm_2=&tm_1;tm_2=localtime(time_2);strftime(c6,sizeof(c6),"%Y年%m月%d日 %X",tm_2);    int cursor_pos[2],cursor_before[2];printf("\t+++++++++++++++++++++++++++++++++++++++++\n");printf("\t\t此象棋游戏由高瑞制作,谢谢游玩!\n");printf("\t+++++++++++++++++++++++++++++++++++++++++\n");sleep(3);Cfor(i=15;i>=1;i--){N N N N Nprintf("现在是%s,请阅读游戏规则!\n",c6);printf("按\"W\"\"A\"\"S\"\"D\"移动光标\(即0\),按\"P\"键选中棋子,若选错棋子,可按\"P\"放下,随后移动,回车落子\n");printf("%d\n",i);sleep(1);C}N N N N Nprintf("现在是%s,请阅读游戏规则!\n",c6);printf("按\"W\"\"A\"\"S\"\"D\"移动光标\(即0\),按\"P\"键选中棋子,若选错棋子,可按\"P\"放下,随后移动,回车落子\n");printf("看完了吗?看完请回车进入游戏!");while((c1=getchar())!='\n');C
//第一部分结束,第二部分:地图绘制与光标控制开始
START:  clock_1=clock();char word_0[20][14]={"0  ","+  ","车 ","马 ","象 ","士 ","将 ","炮 ","兵 ","車 ","馬 ","相 ","仕 ","帥 ","砲 ","卒 ","-- ","\n"};
//word_0为初始组,供重开游戏使用,下面word为游戏中的字符组char word[20][14];for(i=0;i<20;i++)strcpy(word[i],word_0[i]);char *word_pointer[10][11];
//由于汉字编码的特殊性,单个汉字必须存放在字符数组中,故必须使用二维指针数组for(i=0;i<10;i++){P(i,0)=word[16];P(i,10)=word[17];}for(i=1;i<=5;i++){P(0,i)=word[i+1];P(0,10-i)=word[i+1];}for(i=1;i<=5;i++){P(9,i)=word[8+i];P(9,10-i)=word[8+i];}for(i=1;i<10;i++)P(1,i)=P(2,i)=P(3,i)=P(4,i)=P(5,i)=P(6,i)=P(7,i)=P(8,i)=word[1];P(2,2)=P(2,8)=word[7];P(7,2)=P(7,8)=word[14];P(3,1)=P(3,3)=P(3,5)=P(3,7)=P(3,9)=word[8];P(6,1)=P(6,3)=P(6,5)=P(6,7)=P(6,9)=word[15];t=P(4,4);P(4,4)=cursor;cursor_pos[0]=cursor_pos[1]=4;
//打印BOARDJIANGCN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}system("stty -icanon");
//选定棋子
ERROR_CHOOSE_JIANG:     while((c1=getchar())!='P'&&(c1!='p')){switch(c1){case 'W':case 'w':if(cursor_pos[0]==0)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0]-1,cursor_pos[1]);P(cursor_pos[0]-1,cursor_pos[1])=cursor;cursor_pos[0]-=1;}break;case 'S':case 's':if(cursor_pos[0]==9)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0]+1,cursor_pos[1]);P(cursor_pos[0]+1,cursor_pos[1])=cursor;cursor_pos[0]+=1;}break;case 'A':case 'a':if(cursor_pos[1]==1)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0],cursor_pos[1]-1);P(cursor_pos[0],cursor_pos[1]-1)=cursor;cursor_pos[1]-=1;}break;case 'D':case 'd':if(cursor_pos[1]==9)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0],cursor_pos[1]+1);P(cursor_pos[0],cursor_pos[1]+1)=cursor;cursor_pos[1]+=1;}break;default:break;}CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}}if( (!strcmp(t,"+  ")) || judge_camp(t)!=1 ){CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}else{cursor_before[0]=cursor_pos[0];cursor_before[1]=cursor_pos[1];strcpy(cursor,t);CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}}
//落子
ERROR_JIANG:while((c1=getchar())!='\n'&&(c1!='\n')&&(c1!='P')&&(c1!='p')){switch(c1){case 'W':case 'w':if(cursor_pos[0]==0)break;else{   P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0]-1,cursor_pos[1]);P(cursor_pos[0]-1,cursor_pos[1])=cursor;cursor_pos[0]-=1;}break;case 'S':case 's':if(cursor_pos[0]==9)break;else{   P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0]+1,cursor_pos[1]);P(cursor_pos[0]+1,cursor_pos[1])=cursor;cursor_pos[0]+=1;}break;case 'A':case 'a':if(cursor_pos[1]==1)break;else{   P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0],cursor_pos[1]-1);P(cursor_pos[0],cursor_pos[1]-1)=cursor;cursor_pos[1]-=1;}break;case 'D':case 'd':if(cursor_pos[1]==9)break;else{   P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0],cursor_pos[1]+1);P(cursor_pos[0],cursor_pos[1]+1)=cursor;cursor_pos[1]+=1;}break;default:break;}CN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}}if((c1=='P')||(c1=='p')){strcpy(cursor,word_0[0]);P(cursor_pos[0],cursor_pos[1])=t;cursor_pos[0]=cursor_before[0];cursor_pos[1]=cursor_before[1];t=P(cursor_before[0],cursor_before[1]);JIANGCN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}switch(judge_piece(cursor)){case 1:m=n=1;if(cursor_pos[0]==cursor_before[0]&&cursor_pos[1]==cursor_before[1]){strcpy(cursor,"0  ");goto ERROR_CHOOSE_JIANG;}if(cursor_pos[0]<cursor_before[0])for(j=1;j<cursor_before[0]-cursor_pos[0];j++)if(strcmp(P(cursor_pos[0]+j,cursor_pos[1]),"+  "))m=0;if(cursor_pos[0]>cursor_before[0])for(j=1;j<cursor_pos[0]-cursor_before[0];j++)if(strcmp(P(cursor_before[0]+j,cursor_pos[1]),"+  "))m=0;if(cursor_pos[1]!=cursor_before[1]) m=0;if(cursor_pos[1]>cursor_before[1])for(j=1;j<cursor_pos[1]-cursor_before[1];j++)if(strcmp(P(cursor_pos[0],cursor_before[1]+j),"+  "))n=0;if(cursor_pos[1]<cursor_before[1])for(j=1;j<cursor_before[1]-cursor_pos[1];j++)if(strcmp(P(cursor_pos[0],cursor_pos[1]+j),"+  "))n=0;if(cursor_pos[0]!=cursor_before[0]) n=0;if(m==0&&n==0) goto ERROR_JIANG;else if(m==1 && judge_camp(t)!=1 ){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}else if(n==1 && judge_camp(t)!=1 ){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}else goto ERROR_JIANG;break;case 2:if((cursor_pos[1]-cursor_before[1])*(cursor_pos[1]-cursor_before[1])+(cursor_pos[0]-cursor_before[0])*(cursor_pos[0]-cursor_before[0])!=5)goto ERROR_JIANG;if(cursor_pos[0]-cursor_before[0]==2&&!strcmp(P(cursor_before[0]+1,cursor_before[1]),"+  ")&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N N for(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}if(cursor_before[0]-cursor_pos[0]==2&&!strcmp(P(cursor_before[0]-1,cursor_before[1]),"+  ")&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;SHUAICN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}if(cursor_before[1]-cursor_pos[1]==2&&!strcmp(P(cursor_before[0],cursor_before[1]-1),"+  ")&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}if(cursor_pos[1]-cursor_before[1]==2&&!strcmp(P(cursor_before[0],cursor_before[1]+1),"+  ")&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}goto ERROR_JIANG;break;case 3:if((cursor_pos[1]-cursor_before[1])*(cursor_pos[1]-cursor_before[1])+(cursor_pos[0]-cursor_before[0])*(cursor_pos[0]-cursor_before[0])!=8)goto ERROR_JIANG;if(cursor_pos[0]-cursor_before[0]==2&&cursor_pos[1]-cursor_before[1]==2&&cursor_pos[0]<=4&&!strcmp(P(cursor_before[0]+1,cursor_before[1]+1),"+  ")&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}if(cursor_before[0]-cursor_pos[0]==2&&cursor_pos[1]-cursor_before[1]==2&&cursor_pos[0]<=4&&!strcmp(P(cursor_before[0]-1,cursor_before[1]+1),"+  ")&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}if(cursor_before[1]-cursor_pos[1]==2&&cursor_pos[0]-cursor_before[0]==2&&cursor_pos[0]<=4&&!strcmp(P(cursor_before[0]+1,cursor_before[1]-1),"+  ")&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}if(cursor_before[1]-cursor_pos[1]==2&&cursor_before[0]-cursor_pos[0]==2&&cursor_pos[0]<=4&&!strcmp(P(cursor_before[0]-1,cursor_before[1]-1),"+  ")&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}goto ERROR_JIANG;break;case 4:if((cursor_pos[1]-cursor_before[1])*(cursor_pos[1]-cursor_before[1])+(cursor_pos[0]-cursor_before[0])*(cursor_pos[0]-cursor_before[0])!=2)goto ERROR_JIANG;if(cursor_pos[0]>=0&&cursor_pos[0]<=2&&cursor_pos[1]>=4&&cursor_pos[1]<=6&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}goto ERROR_JIANG;break;case 5:if((cursor_pos[1]-cursor_before[1])*(cursor_pos[1]-cursor_before[1])+(cursor_pos[0]-cursor_before[0])*(cursor_pos[0]-cursor_before[0])!=1)goto ERROR_JIANG;if(cursor_pos[0]>=0&&cursor_pos[0]<=2&&cursor_pos[1]>=4&&cursor_pos[1]<=6&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}goto ERROR_JIANG;break;case 6:m=n=0;if((cursor_pos[0]==cursor_before[0]&&cursor_pos[1]==cursor_before[1])||(cursor_pos[0]!=cursor_before[0]&&cursor_pos[1]!=cursor_before[1])){goto ERROR_JIANG;}if(cursor_pos[0]<cursor_before[0])for(j=1;j<cursor_before[0]-cursor_pos[0];j++)if(strcmp(P(cursor_pos[0]+j,cursor_pos[1]),"+  "))m+=1;if(cursor_pos[0]>cursor_before[0])for(j=1;j<cursor_pos[0]-cursor_before[0];j++)if(strcmp(P(cursor_before[0]+j,cursor_pos[1]),"+  "))m+=1;if(cursor_pos[1]>cursor_before[1])for(j=1;j<cursor_pos[1]-cursor_before[1];j++)if(strcmp(P(cursor_pos[0],cursor_before[1]+j),"+  "))n+=1;if(cursor_pos[1]<cursor_before[1])for(j=1;j<cursor_before[1]-cursor_pos[1];j++)if(strcmp(P(cursor_pos[0],cursor_pos[1]+j),"+  "))n+=1;if(m==1&&(judge_camp(t)==-1)){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}else if(n==1&&(judge_camp(t)==-1)){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}else if(m==0&&n==0&&(judge_camp(t)==0)){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}elsegoto ERROR_JIANG;break;case 7:if((cursor_pos[1]-cursor_before[1])*(cursor_pos[1]-cursor_before[1])+(cursor_pos[0]-cursor_before[0])*(cursor_pos[0]-cursor_before[0])!=1)goto ERROR_JIANG;if(cursor_before[0]<=4&&cursor_pos[0]-cursor_before[0]==1&&cursor_pos[1]==cursor_before[1]&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}if(cursor_before[0]>=5&&(cursor_pos[0]-cursor_before[0]==1||cursor_pos[1]-cursor_before[1]==1||cursor_before[1]-cursor_pos[1]==1)&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}goto ERROR_JIANG;break;}//选定棋子
ERROR_CHOOSE_SHUAI:     while((c1=getchar())!='P'&&(c1!='p')){switch(c1){case 'W':case 'w':if(cursor_pos[0]==0)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0]-1,cursor_pos[1]);P(cursor_pos[0]-1,cursor_pos[1])=cursor;cursor_pos[0]-=1;}break;case 'S':case 's':if(cursor_pos[0]==9)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0]+1,cursor_pos[1]);P(cursor_pos[0]+1,cursor_pos[1])=cursor;cursor_pos[0]+=1;}break;case 'A':case 'a':if(cursor_pos[1]==1)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0],cursor_pos[1]-1);P(cursor_pos[0],cursor_pos[1]-1)=cursor;cursor_pos[1]-=1;}break;case 'D':case 'd':if(cursor_pos[1]==9)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0],cursor_pos[1]+1);P(cursor_pos[0],cursor_pos[1]+1)=cursor;cursor_pos[1]+=1;}break;default:break;}CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}}if( (!strcmp(t,"+  ")) || judge_camp(t)!=-1 ){CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}else{cursor_before[0]=cursor_pos[0];cursor_before[1]=cursor_pos[1];strcpy(cursor,t);CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}}
//帥方落子
ERROR_SHUAI: while((c1=getchar())!='\n'&&(c1!='\n')&&(c1!='P')&&(c1!='p')){switch(c1){case 'W':case 'w':if(cursor_pos[0]==0)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0]-1,cursor_pos[1]);P(cursor_pos[0]-1,cursor_pos[1])=cursor;cursor_pos[0]-=1;}break;case 'S':case 's':if(cursor_pos[0]==9)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0]+1,cursor_pos[1]);P(cursor_pos[0]+1,cursor_pos[1])=cursor;cursor_pos[0]+=1;}break;case 'A':case 'a':if(cursor_pos[1]==1)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0],cursor_pos[1]-1);P(cursor_pos[0],cursor_pos[1]-1)=cursor;cursor_pos[1]-=1;}break;case 'D':case 'd':if(cursor_pos[1]==9)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0],cursor_pos[1]+1);P(cursor_pos[0],cursor_pos[1]+1)=cursor;cursor_pos[1]+=1;}break;default:break;}CN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}}if((c1=='P')||(c1=='p')){strcpy(cursor,word_0[0]);P(cursor_pos[0],cursor_pos[1])=t;cursor_pos[0]=cursor_before[0];cursor_pos[1]=cursor_before[1];t=P(cursor_before[0],cursor_before[1]);CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}switch(judge_piece(cursor)){case 8:m=n=1;if(cursor_pos[0]==cursor_before[0]&&cursor_pos[1]==cursor_before[1]){strcpy(cursor,"0  ");goto ERROR_CHOOSE_SHUAI;}if(cursor_pos[0]<cursor_before[0])for(j=1;j<cursor_before[0]-cursor_pos[0];j++)if(strcmp(P(cursor_pos[0]+j,cursor_pos[1]),"+  "))m=0;if(cursor_pos[0]>cursor_before[0])for(j=1;j<cursor_pos[0]-cursor_before[0];j++)if(strcmp(P(cursor_before[0]+j,cursor_pos[1]),"+  "))m=0;if(cursor_pos[1]!=cursor_before[1]) m=0;if(cursor_pos[1]>cursor_before[1])for(j=1;j<cursor_pos[1]-cursor_before[1];j++)if(strcmp(P(cursor_pos[0],cursor_before[1]+j),"+  "))n=0;if(cursor_pos[1]<cursor_before[1])for(j=1;j<cursor_before[1]-cursor_pos[1];j++)if(strcmp(P(cursor_pos[0],cursor_pos[1]+j),"+  "))n=0;if(cursor_pos[0]!=cursor_before[0]) n=0;if(m==0&&n==0) goto ERROR_SHUAI;else if(m==1 && judge_camp(t)!=-1 ){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}                 goto ERROR_CHOOSE_JIANG;}else if(n==1 && judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}                 goto ERROR_CHOOSE_JIANG;}else goto ERROR_SHUAI;break;case 9:if((cursor_pos[1]-cursor_before[1])*(cursor_pos[1]-cursor_before[1])+(cursor_pos[0]-cursor_before[0])*(cursor_pos[0]-cursor_before[0])!=5)goto ERROR_SHUAI;if(cursor_pos[0]-cursor_before[0]==2&&!strcmp(P(cursor_before[0]+1,cursor_before[1]),"+  ")&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}if(cursor_before[0]-cursor_pos[0]==2&&!strcmp(P(cursor_before[0]-1,cursor_before[1]),"+  ")&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;JIANGCN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}if(cursor_before[1]-cursor_pos[1]==2&&!strcmp(P(cursor_before[0],cursor_before[1]-1),"+  ")&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}if(cursor_pos[1]-cursor_before[1]==2&&!strcmp(P(cursor_before[0],cursor_before[1]+1),"+  ")&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}goto ERROR_SHUAI;break;case 10:if((cursor_pos[1]-cursor_before[1])*(cursor_pos[1]-cursor_before[1])+(cursor_pos[0]-cursor_before[0])*(cursor_pos[0]-cursor_before[0])!=8)goto ERROR_SHUAI;if(cursor_pos[0]-cursor_before[0]==2&&cursor_pos[1]-cursor_before[1]==2&&cursor_pos[0]>=5&&!strcmp(P(cursor_before[0]+1,cursor_before[1]+1),"+  ")&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}if(cursor_before[0]-cursor_pos[0]==2&&cursor_pos[1]-cursor_before[1]==2&&cursor_pos[0]>=5&&!strcmp(P(cursor_before[0]-1,cursor_before[1]+1),"+  ")&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}if(cursor_before[1]-cursor_pos[1]==2&&cursor_pos[0]-cursor_before[0]==2&&cursor_pos[0]>=5&&!strcmp(P(cursor_before[0]+1,cursor_before[1]-1),"+  ")&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}if(cursor_before[1]-cursor_pos[1]==2&&cursor_before[0]-cursor_pos[0]==2&&cursor_pos[0]>=5&&!strcmp(P(cursor_before[0]-1,cursor_before[1]-1),"+  ")&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}goto ERROR_SHUAI;break;case 11:if((cursor_pos[1]-cursor_before[1])*(cursor_pos[1]-cursor_before[1])+(cursor_pos[0]-cursor_before[0])*(cursor_pos[0]-cursor_before[0])!=2)goto ERROR_SHUAI;if(cursor_pos[0]>=7&&cursor_pos[0]<=9&&cursor_pos[1]>=4&&cursor_pos[1]<=6&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}goto ERROR_SHUAI;break;case 12:if((cursor_pos[1]-cursor_before[1])*(cursor_pos[1]-cursor_before[1])+(cursor_pos[0]-cursor_before[0])*(cursor_pos[0]-cursor_before[0])!=1)goto ERROR_SHUAI;if(cursor_pos[0]>=7&&cursor_pos[0]<=9&&cursor_pos[1]>=4&&cursor_pos[1]<=6&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}goto ERROR_SHUAI;break;case 13:m=n=0;if((cursor_pos[0]==cursor_before[0]&&cursor_pos[1]==cursor_before[1])||(cursor_pos[0]!=cursor_before[0]&&cursor_pos[1]!=cursor_before[1])){goto ERROR_SHUAI;}if(cursor_pos[0]<cursor_before[0])for(j=1;j<cursor_before[0]-cursor_pos[0];j++)if(strcmp(P(cursor_pos[0]+j,cursor_pos[1]),"+  "))m+=1;if(cursor_pos[0]>cursor_before[0])for(j=1;j<cursor_pos[0]-cursor_before[0];j++)if(strcmp(P(cursor_before[0]+j,cursor_pos[1]),"+  "))m+=1;if(cursor_pos[1]>cursor_before[1])for(j=1;j<cursor_pos[1]-cursor_before[1];j++)if(strcmp(P(cursor_pos[0],cursor_before[1]+j),"+  "))n+=1;if(cursor_pos[1]<cursor_before[1])for(j=1;j<cursor_before[1]-cursor_pos[1];j++)if(strcmp(P(cursor_pos[0],cursor_pos[1]+j),"+  "))n+=1;if(m==1&&(judge_camp(t)==1)){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}else if(n==1&&(judge_camp(t)==1)){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}else if(m==0&&n==0&&(judge_camp(t)==0)){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}elsegoto ERROR_SHUAI;break;case 14:if((cursor_pos[1]-cursor_before[1])*(cursor_pos[1]-cursor_before[1])+(cursor_pos[0]-cursor_before[0])*(cursor_pos[0]-cursor_before[0])!=1)goto ERROR_SHUAI;if(cursor_before[0]>=5&&cursor_pos[1]==cursor_before[1]&&cursor_pos[0]-cursor_before[0]==-1&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}if(cursor_before[0]<=4&&(cursor_pos[0]-cursor_before[0]==-1||cursor_pos[1]-cursor_before[1]==1||cursor_before[1]-cursor_pos[1]==1)&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}goto ERROR_SHUAI;break;}
JIANG_WIN:clock_2=clock();Cprintf("\n将方获胜!对局用时:%2.f秒",((float)(clock_2-clock_1))/1000);printf("\n再来一局?1-重新开始,其他任意键退出");if((c1=getchar())=='1')goto START;else exit(0);
SHUAI_WIN:clock_2=clock();Cprintf("\n帥方获胜!对局用时:%.2f秒",((float)(clock_2-clock_1))/1000);printf("\n再来一局?1-重新开始,其他任意键退出");if((c1=getchar())=='1')goto START;else exit(0);
}

二、windows版

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
#include<string.h>
#include<conio.h>
#define N printf("\n");
#define C system("cls");
#define P(x,y) word_pointer[x][y]
#define JIANG printf("将方回合");
#define SHUAI printf("帥方回合");int i,j,k,l,m,n;
int judge_piece(char *a);
int judge_win(char *a[][11],char *t){m=n=0;if(judge_piece(t)==5) m=1;if(judge_piece(t)==12) n=1;for(i=0;i<10;i++)for(j=0;j<11;j++)if(judge_piece(a[i][j])==5)m=1;else if(judge_piece(a[i][j])==12)n=1;if(m==1&&n==0) return 1;else if(m==0&&n==1) return -1;else return 0;
}//jiang_shuai(word_pointer,t,cursor_pos[1])==0
//一段可能会多次用到的代码:
/*if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;*/
int judge_camp(char *a){int i;if(!strcmp(a,"车 ")) i=1;else if(!strcmp(a,"马 ")) i=2;else if(!strcmp(a,"象 ")) i=3;else if(!strcmp(a,"士 ")) i=4;else if(!strcmp(a,"将 ")) i=5;else if(!strcmp(a,"炮 ")) i=6;else if(!strcmp(a,"兵 ")) i=7;else if(!strcmp(a,"車 ")) i=8;else if(!strcmp(a,"馬 ")) i=9;else if(!strcmp(a,"相 ")) i=10;else if(!strcmp(a,"仕 ")) i=11;else if(!strcmp(a,"帥 ")) i=12;else if(!strcmp(a,"砲 ")) i=13;else if(!strcmp(a,"卒 ")) i=14;else return 0;switch(i){case 1:case 2:case 3:case 4:case 5:case 6:case 7:return 1;break;case 8:case 9:case 10:case 11:case 12:case 13:case 14:return -1;break;default:return 0;}
}int judge_piece(char *a){int i;if(!strcmp(a,"车 ")) i=1;else if(!strcmp(a,"马 ")) i=2;else if(!strcmp(a,"象 ")) i=3;else if(!strcmp(a,"士 ")) i=4;else if(!strcmp(a,"将 ")) i=5;else if(!strcmp(a,"炮 ")) i=6;else if(!strcmp(a,"兵 ")) i=7;else if(!strcmp(a,"車 ")) i=8;else if(!strcmp(a,"馬 ")) i=9;else if(!strcmp(a,"相 ")) i=10;else if(!strcmp(a,"仕 ")) i=11;else if(!strcmp(a,"帥 ")) i=12;else if(!strcmp(a,"砲 ")) i=13;else if(!strcmp(a,"卒 ")) i=14;else return 0;return i;
}int main()
{
//第一部分:准备阶段time_t time_1,*time_2=&time_1;clock_t clock_1,clock_2;time(time_2);char c1,c2,*t,cursor[14]="0  ",*c5,c6[100];struct tm tm_1,*tm_2=&tm_1;tm_2=localtime(time_2);strftime(c6,sizeof(c6),"%Y年%m月%d日 %X",tm_2);    int cursor_pos[2],cursor_before[2];printf("\t+++++++++++++++++++++++++++++++++++++++++\n");printf("\t\t此象棋游戏由高瑞制作,谢谢游玩!\n");printf("\t+++++++++++++++++++++++++++++++++++++++++\n");Sleep(3000);Cfor(i=15;i>=1;i--){N N N N Nprintf("现在是%s,请阅读游戏规则!\n",c6);printf("按\"W\"\"A\"\"S\"\"D\"移动光标\(即0\),按\"P\"键选中棋子,若选错棋子,可按\"P\"放下,随后移动,回车落子\n");printf("%d\n",i);Sleep(1000);C}N N N N Nprintf("现在是%s,请阅读游戏规则!\n",c6);printf("按\"W\"\"A\"\"S\"\"D\"移动光标\(即0\),按\"P\"键选中棋子,若选错棋子,可按\"P\"放下,随后移动,回车落子\n");printf("看完了吗?看完请回车进入游戏!");while((c1=getchar())!='\n');C
//第一部分结束,第二部分:地图绘制与光标控制开始START:  clock_1=clock();char word_0[20][14]={"0  ","+  ","车 ","马 ","象 ","士 ","将 ","炮 ","兵 ","車 ","馬 ","相 ","仕 ","帥 ","砲 ","卒 ","-- ","\n"};
//word_0为初始组,供重开游戏使用,下面word为游戏中的字符组char word[20][14];for(i=0;i<20;i++)strcpy(word[i],word_0[i]);char *word_pointer[10][11];
//由于汉字编码的特殊性,单个汉字必须存放在字符数组中,故必须使用二维指针数组for(i=0;i<10;i++){P(i,0)=word[16];P(i,10)=word[17];}for(i=1;i<=5;i++){P(0,i)=word[i+1];P(0,10-i)=word[i+1];}for(i=1;i<=5;i++){P(9,i)=word[8+i];P(9,10-i)=word[8+i];}for(i=1;i<10;i++)P(1,i)=P(2,i)=P(3,i)=P(4,i)=P(5,i)=P(6,i)=P(7,i)=P(8,i)=word[1];P(2,2)=P(2,8)=word[7];P(7,2)=P(7,8)=word[14];P(3,1)=P(3,3)=P(3,5)=P(3,7)=P(3,9)=word[8];P(6,1)=P(6,3)=P(6,5)=P(6,7)=P(6,9)=word[15];t=P(4,4);P(4,4)=cursor;cursor_pos[0]=cursor_pos[1]=4;
//打印BOARDJIANGCN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}
//选定棋子
ERROR_CHOOSE_JIANG:     while((c1=getch())!='P'&&(c1!='p')){switch(c1){case 'W':case 'w':if(cursor_pos[0]==0)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0]-1,cursor_pos[1]);P(cursor_pos[0]-1,cursor_pos[1])=cursor;cursor_pos[0]-=1;}break;case 'S':case 's':if(cursor_pos[0]==9)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0]+1,cursor_pos[1]);P(cursor_pos[0]+1,cursor_pos[1])=cursor;cursor_pos[0]+=1;}break;case 'A':case 'a':if(cursor_pos[1]==1)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0],cursor_pos[1]-1);P(cursor_pos[0],cursor_pos[1]-1)=cursor;cursor_pos[1]-=1;}break;case 'D':case 'd':if(cursor_pos[1]==9)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0],cursor_pos[1]+1);P(cursor_pos[0],cursor_pos[1]+1)=cursor;cursor_pos[1]+=1;}break;default:break;}CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}}if( (!strcmp(t,"+  ")) || judge_camp(t)!=1 ){CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}else{cursor_before[0]=cursor_pos[0];cursor_before[1]=cursor_pos[1];strcpy(cursor,t);CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}}
//落子
ERROR_JIANG:while((c1=getch())!='\r'){switch(c1){case 'W':case 'w':if(cursor_pos[0]==0)break;else{   P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0]-1,cursor_pos[1]);P(cursor_pos[0]-1,cursor_pos[1])=cursor;cursor_pos[0]-=1;}break;case 'S':case 's':if(cursor_pos[0]==9)break;else{   P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0]+1,cursor_pos[1]);P(cursor_pos[0]+1,cursor_pos[1])=cursor;cursor_pos[0]+=1;}break;case 'A':case 'a':if(cursor_pos[1]==1)break;else{   P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0],cursor_pos[1]-1);P(cursor_pos[0],cursor_pos[1]-1)=cursor;cursor_pos[1]-=1;}break;case 'D':case 'd':if(cursor_pos[1]==9)break;else{   P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0],cursor_pos[1]+1);P(cursor_pos[0],cursor_pos[1]+1)=cursor;cursor_pos[1]+=1;}break;default:break;}CN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}}if((c1=='P')||(c1=='p')){strcpy(cursor,word_0[0]);P(cursor_pos[0],cursor_pos[1])=t;cursor_pos[0]=cursor_before[0];cursor_pos[1]=cursor_before[1];t=P(cursor_before[0],cursor_before[1]);JIANGCN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}switch(judge_piece(cursor)){case 1:m=n=1;if(cursor_pos[0]==cursor_before[0]&&cursor_pos[1]==cursor_before[1]){strcpy(cursor,"0  ");goto ERROR_CHOOSE_JIANG;}if(cursor_pos[0]<cursor_before[0])for(j=1;j<cursor_before[0]-cursor_pos[0];j++)if(strcmp(P(cursor_pos[0]+j,cursor_pos[1]),"+  "))m=0;if(cursor_pos[0]>cursor_before[0])for(j=1;j<cursor_pos[0]-cursor_before[0];j++)if(strcmp(P(cursor_before[0]+j,cursor_pos[1]),"+  "))m=0;if(cursor_pos[1]!=cursor_before[1]) m=0;if(cursor_pos[1]>cursor_before[1])for(j=1;j<cursor_pos[1]-cursor_before[1];j++)if(strcmp(P(cursor_pos[0],cursor_before[1]+j),"+  "))n=0;if(cursor_pos[1]<cursor_before[1])for(j=1;j<cursor_before[1]-cursor_pos[1];j++)if(strcmp(P(cursor_pos[0],cursor_pos[1]+j),"+  "))n=0;if(cursor_pos[0]!=cursor_before[0]) n=0;if(m==0&&n==0) goto ERROR_JIANG;else if(m==1 && judge_camp(t)!=1 ){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}else if(n==1 && judge_camp(t)!=1 ){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}else goto ERROR_JIANG;break;case 2:if((cursor_pos[1]-cursor_before[1])*(cursor_pos[1]-cursor_before[1])+(cursor_pos[0]-cursor_before[0])*(cursor_pos[0]-cursor_before[0])!=5)goto ERROR_JIANG;if(cursor_pos[0]-cursor_before[0]==2&&!strcmp(P(cursor_before[0]+1,cursor_before[1]),"+  ")&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N N for(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}if(cursor_before[0]-cursor_pos[0]==2&&!strcmp(P(cursor_before[0]-1,cursor_before[1]),"+  ")&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;SHUAICN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}if(cursor_before[1]-cursor_pos[1]==2&&!strcmp(P(cursor_before[0],cursor_before[1]-1),"+  ")&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}if(cursor_pos[1]-cursor_before[1]==2&&!strcmp(P(cursor_before[0],cursor_before[1]+1),"+  ")&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}goto ERROR_JIANG;break;case 3:if((cursor_pos[1]-cursor_before[1])*(cursor_pos[1]-cursor_before[1])+(cursor_pos[0]-cursor_before[0])*(cursor_pos[0]-cursor_before[0])!=8)goto ERROR_JIANG;if(cursor_pos[0]-cursor_before[0]==2&&cursor_pos[1]-cursor_before[1]==2&&cursor_pos[0]<=4&&!strcmp(P(cursor_before[0]+1,cursor_before[1]+1),"+  ")&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}if(cursor_before[0]-cursor_pos[0]==2&&cursor_pos[1]-cursor_before[1]==2&&cursor_pos[0]<=4&&!strcmp(P(cursor_before[0]-1,cursor_before[1]+1),"+  ")&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}if(cursor_before[1]-cursor_pos[1]==2&&cursor_pos[0]-cursor_before[0]==2&&cursor_pos[0]<=4&&!strcmp(P(cursor_before[0]+1,cursor_before[1]-1),"+  ")&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}if(cursor_before[1]-cursor_pos[1]==2&&cursor_before[0]-cursor_pos[0]==2&&cursor_pos[0]<=4&&!strcmp(P(cursor_before[0]-1,cursor_before[1]-1),"+  ")&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}goto ERROR_JIANG;break;case 4:if((cursor_pos[1]-cursor_before[1])*(cursor_pos[1]-cursor_before[1])+(cursor_pos[0]-cursor_before[0])*(cursor_pos[0]-cursor_before[0])!=2)goto ERROR_JIANG;if(cursor_pos[0]>=0&&cursor_pos[0]<=2&&cursor_pos[1]>=4&&cursor_pos[1]<=6&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}goto ERROR_JIANG;break;case 5:if((cursor_pos[1]-cursor_before[1])*(cursor_pos[1]-cursor_before[1])+(cursor_pos[0]-cursor_before[0])*(cursor_pos[0]-cursor_before[0])!=1)goto ERROR_JIANG;if(cursor_pos[0]>=0&&cursor_pos[0]<=2&&cursor_pos[1]>=4&&cursor_pos[1]<=6&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}goto ERROR_JIANG;break;case 6:m=n=0;if((cursor_pos[0]==cursor_before[0]&&cursor_pos[1]==cursor_before[1])||(cursor_pos[0]!=cursor_before[0]&&cursor_pos[1]!=cursor_before[1])){goto ERROR_JIANG;}if(cursor_pos[0]<cursor_before[0])for(j=1;j<cursor_before[0]-cursor_pos[0];j++)if(strcmp(P(cursor_pos[0]+j,cursor_pos[1]),"+  "))m+=1;if(cursor_pos[0]>cursor_before[0])for(j=1;j<cursor_pos[0]-cursor_before[0];j++)if(strcmp(P(cursor_before[0]+j,cursor_pos[1]),"+  "))m+=1;if(cursor_pos[1]>cursor_before[1])for(j=1;j<cursor_pos[1]-cursor_before[1];j++)if(strcmp(P(cursor_pos[0],cursor_before[1]+j),"+  "))n+=1;if(cursor_pos[1]<cursor_before[1])for(j=1;j<cursor_before[1]-cursor_pos[1];j++)if(strcmp(P(cursor_pos[0],cursor_pos[1]+j),"+  "))n+=1;if(m==1&&(judge_camp(t)==-1)){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}else if(n==1&&(judge_camp(t)==-1)){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}else if(m==0&&n==0&&(judge_camp(t)==0)){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}elsegoto ERROR_JIANG;break;case 7:if((cursor_pos[1]-cursor_before[1])*(cursor_pos[1]-cursor_before[1])+(cursor_pos[0]-cursor_before[0])*(cursor_pos[0]-cursor_before[0])!=1)goto ERROR_JIANG;if(cursor_before[0]<=4&&cursor_pos[0]-cursor_before[0]==1&&cursor_pos[1]==cursor_before[1]&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}if(cursor_before[0]>=5&&(cursor_pos[0]-cursor_before[0]==1||cursor_pos[1]-cursor_before[1]==1||cursor_before[1]-cursor_pos[1]==1)&&judge_camp(t)!=1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}goto ERROR_JIANG;break;}//选定棋子ERROR_CHOOSE_SHUAI:     while((c1=getch())!='P'&&(c1!='p')){switch(c1){case 'W':case 'w':if(cursor_pos[0]==0)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0]-1,cursor_pos[1]);P(cursor_pos[0]-1,cursor_pos[1])=cursor;cursor_pos[0]-=1;}break;case 'S':case 's':if(cursor_pos[0]==9)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0]+1,cursor_pos[1]);P(cursor_pos[0]+1,cursor_pos[1])=cursor;cursor_pos[0]+=1;}break;case 'A':case 'a':if(cursor_pos[1]==1)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0],cursor_pos[1]-1);P(cursor_pos[0],cursor_pos[1]-1)=cursor;cursor_pos[1]-=1;}break;case 'D':case 'd':if(cursor_pos[1]==9)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0],cursor_pos[1]+1);P(cursor_pos[0],cursor_pos[1]+1)=cursor;cursor_pos[1]+=1;}break;default:break;}CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}}if( (!strcmp(t,"+  ")) || judge_camp(t)!=-1 ){CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}else{cursor_before[0]=cursor_pos[0];cursor_before[1]=cursor_pos[1];strcpy(cursor,t);CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}}
//帥方落子
ERROR_SHUAI: while((c1=getch())!='\r'&&(c1!='P')&&(c1!='p')){switch(c1){case 'W':case 'w':if(cursor_pos[0]==0)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0]-1,cursor_pos[1]);P(cursor_pos[0]-1,cursor_pos[1])=cursor;cursor_pos[0]-=1;}break;case 'S':case 's':if(cursor_pos[0]==9)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0]+1,cursor_pos[1]);P(cursor_pos[0]+1,cursor_pos[1])=cursor;cursor_pos[0]+=1;}break;case 'A':case 'a':if(cursor_pos[1]==1)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0],cursor_pos[1]-1);P(cursor_pos[0],cursor_pos[1]-1)=cursor;cursor_pos[1]-=1;}break;case 'D':case 'd':if(cursor_pos[1]==9)break;else{P(cursor_pos[0],cursor_pos[1])=t;t=P(cursor_pos[0],cursor_pos[1]+1);P(cursor_pos[0],cursor_pos[1]+1)=cursor;cursor_pos[1]+=1;}break;default:break;}CN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}}if((c1=='P')||(c1=='p')){strcpy(cursor,word_0[0]);P(cursor_pos[0],cursor_pos[1])=t;cursor_pos[0]=cursor_before[0];cursor_pos[1]=cursor_before[1];t=P(cursor_before[0],cursor_before[1]);CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_SHUAI;}switch(judge_piece(cursor)){case 8:m=n=1;if(cursor_pos[0]==cursor_before[0]&&cursor_pos[1]==cursor_before[1]){strcpy(cursor,"0  ");goto ERROR_CHOOSE_SHUAI;}if(cursor_pos[0]<cursor_before[0])for(j=1;j<cursor_before[0]-cursor_pos[0];j++)if(strcmp(P(cursor_pos[0]+j,cursor_pos[1]),"+  "))m=0;if(cursor_pos[0]>cursor_before[0])for(j=1;j<cursor_pos[0]-cursor_before[0];j++)if(strcmp(P(cursor_before[0]+j,cursor_pos[1]),"+  "))m=0;if(cursor_pos[1]!=cursor_before[1]) m=0;if(cursor_pos[1]>cursor_before[1])for(j=1;j<cursor_pos[1]-cursor_before[1];j++)if(strcmp(P(cursor_pos[0],cursor_before[1]+j),"+  "))n=0;if(cursor_pos[1]<cursor_before[1])for(j=1;j<cursor_before[1]-cursor_pos[1];j++)if(strcmp(P(cursor_pos[0],cursor_pos[1]+j),"+  "))n=0;if(cursor_pos[0]!=cursor_before[0]) n=0;if(m==0&&n==0) goto ERROR_SHUAI;else if(m==1 && judge_camp(t)!=-1 ){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}                 goto ERROR_CHOOSE_JIANG;}else if(n==1 && judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}                 goto ERROR_CHOOSE_JIANG;}else goto ERROR_SHUAI;break;case 9:if((cursor_pos[1]-cursor_before[1])*(cursor_pos[1]-cursor_before[1])+(cursor_pos[0]-cursor_before[0])*(cursor_pos[0]-cursor_before[0])!=5)goto ERROR_SHUAI;if(cursor_pos[0]-cursor_before[0]==2&&!strcmp(P(cursor_before[0]+1,cursor_before[1]),"+  ")&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}if(cursor_before[0]-cursor_pos[0]==2&&!strcmp(P(cursor_before[0]-1,cursor_before[1]),"+  ")&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;JIANGCN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}if(cursor_before[1]-cursor_pos[1]==2&&!strcmp(P(cursor_before[0],cursor_before[1]-1),"+  ")&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}if(cursor_pos[1]-cursor_before[1]==2&&!strcmp(P(cursor_before[0],cursor_before[1]+1),"+  ")&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}goto ERROR_SHUAI;break;case 10:if((cursor_pos[1]-cursor_before[1])*(cursor_pos[1]-cursor_before[1])+(cursor_pos[0]-cursor_before[0])*(cursor_pos[0]-cursor_before[0])!=8)goto ERROR_SHUAI;if(cursor_pos[0]-cursor_before[0]==2&&cursor_pos[1]-cursor_before[1]==2&&cursor_pos[0]>=5&&!strcmp(P(cursor_before[0]+1,cursor_before[1]+1),"+  ")&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}if(cursor_before[0]-cursor_pos[0]==2&&cursor_pos[1]-cursor_before[1]==2&&cursor_pos[0]>=5&&!strcmp(P(cursor_before[0]-1,cursor_before[1]+1),"+  ")&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}if(cursor_before[1]-cursor_pos[1]==2&&cursor_pos[0]-cursor_before[0]==2&&cursor_pos[0]>=5&&!strcmp(P(cursor_before[0]+1,cursor_before[1]-1),"+  ")&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}if(cursor_before[1]-cursor_pos[1]==2&&cursor_before[0]-cursor_pos[0]==2&&cursor_pos[0]>=5&&!strcmp(P(cursor_before[0]-1,cursor_before[1]-1),"+  ")&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}goto ERROR_SHUAI;break;case 11:if((cursor_pos[1]-cursor_before[1])*(cursor_pos[1]-cursor_before[1])+(cursor_pos[0]-cursor_before[0])*(cursor_pos[0]-cursor_before[0])!=2)goto ERROR_SHUAI;if(cursor_pos[0]>=7&&cursor_pos[0]<=9&&cursor_pos[1]>=4&&cursor_pos[1]<=6&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}goto ERROR_SHUAI;break;case 12:if((cursor_pos[1]-cursor_before[1])*(cursor_pos[1]-cursor_before[1])+(cursor_pos[0]-cursor_before[0])*(cursor_pos[0]-cursor_before[0])!=1)goto ERROR_SHUAI;if(cursor_pos[0]>=7&&cursor_pos[0]<=9&&cursor_pos[1]>=4&&cursor_pos[1]<=6&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}goto ERROR_SHUAI;break;case 13:m=n=0;if((cursor_pos[0]==cursor_before[0]&&cursor_pos[1]==cursor_before[1])||(cursor_pos[0]!=cursor_before[0]&&cursor_pos[1]!=cursor_before[1])){goto ERROR_SHUAI;}if(cursor_pos[0]<cursor_before[0])for(j=1;j<cursor_before[0]-cursor_pos[0];j++)if(strcmp(P(cursor_pos[0]+j,cursor_pos[1]),"+  "))m+=1;if(cursor_pos[0]>cursor_before[0])for(j=1;j<cursor_pos[0]-cursor_before[0];j++)if(strcmp(P(cursor_before[0]+j,cursor_pos[1]),"+  "))m+=1;if(cursor_pos[1]>cursor_before[1])for(j=1;j<cursor_pos[1]-cursor_before[1];j++)if(strcmp(P(cursor_pos[0],cursor_before[1]+j),"+  "))n+=1;if(cursor_pos[1]<cursor_before[1])for(j=1;j<cursor_before[1]-cursor_pos[1];j++)if(strcmp(P(cursor_pos[0],cursor_pos[1]+j),"+  "))n+=1;if(m==1&&(judge_camp(t)==1)){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}else if(n==1&&(judge_camp(t)==1)){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}else if(m==0&&n==0&&(judge_camp(t)==0)){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CSHUAIN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}elsegoto ERROR_SHUAI;break;case 14:if((cursor_pos[1]-cursor_before[1])*(cursor_pos[1]-cursor_before[1])+(cursor_pos[0]-cursor_before[0])*(cursor_pos[0]-cursor_before[0])!=1)goto ERROR_SHUAI;if(cursor_before[0]>=5&&cursor_pos[1]==cursor_before[1]&&cursor_pos[0]-cursor_before[0]==-1&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}if(cursor_before[0]<=4&&(cursor_pos[0]-cursor_before[0]==-1||cursor_pos[1]-cursor_before[1]==1||cursor_before[1]-cursor_pos[1]==1)&&judge_camp(t)!=-1){t=P(cursor_before[0],cursor_before[1]);P(cursor_before[0],cursor_before[1])=word_0[1];strcpy(cursor,"0  ");if(judge_win(word_pointer,t)==0);else if(judge_win(word_pointer,t)==1) goto JIANG_WIN;else if(judge_win(word_pointer,t)==-1) goto SHUAI_WIN;CJIANGN N N Nfor(i=0;i<10;i++){for(j=0;j<11;j++)printf("%s",P(i,j));}goto ERROR_CHOOSE_JIANG;}goto ERROR_SHUAI;break;}
JIANG_WIN:clock_2=clock();Cprintf("\n将方获胜!对局用时:%2.f秒",((float)(clock_2-clock_1))/1000);printf("\n再来一局?1-重新开始,其他任意键退出");if((c1=getchar())=='1')goto START;else exit(0);
SHUAI_WIN:clock_2=clock();Cprintf("\n帅方获胜!对局用时:%.2f秒",((float)(clock_2-clock_1))/1000);printf("\n再来一局?1-重新开始,其他任意键退出");if((c1=getch())=='1')goto START;else exit(0);
}

END.

用C语言实现中国象棋(mac+windows双版本)相关推荐

  1. C语言实现中国象棋(Qt实现界面,源码下载,详细注释,易移植)

    前言:中国象棋的规则很多人都懂,用C语言做一个中国象棋游戏,其要点是怎么把抽象的规则变成形象.具体的代码.本项目提供详细的实现思路,源码附带大量的注释说明,源码逐步地实现了每一种棋类的走棋规则.吃棋规 ...

  2. linux下的c语言实现象棋,用C语言实现中国象棋

    基于五子棋框架上的 象棋 小游戏 本游戏是上各种水课无聊时的产物...不参考现有游戏从零开始实现各项功能. 游戏配置:二维数组,循环系统,wasd基本移动,调整窗台的函数,以及富足的发呆时间.. 完整 ...

  3. 中国象棋棋盘c语言编程,中国象棋 C语言编程.ppt

    中国象棋 C语言编程 双人对弈中国象棋 程序所负责内容介绍 计算机生成红黑双方以及棋盘. 各个棋子的移动. 当危险时显示被"将军". 分支思路 1.棋盘棋子的制作与输出 棋盘 走子 ...

  4. C/C++编程笔记:C语言打造中国象棋游戏,项目源代码分享!

    中国象棋是起源于中国的一种棋,属于二人对抗性游戏的一种,在中国有着悠久的历史.由于用具简单,趣味性强,成为流行极为广泛的棋艺活动. 它是中国棋文化,也是中华民族的文化瑰宝,它源远流长,趣味浓厚,基本规 ...

  5. 安卓android中国象棋chess程序项目源码源代码,C/C++编程笔记:C语言打造中国象棋游戏,项目源代码分享!,c语言笔记大全...

    #include#include #define INTERVAL 50 //前面的间隔 #define CHESS_GRID_SIZE 70 //格子宽度 #define ROW 10 #defin ...

  6. 扁平化c语言教程,中国象棋人机博弈程序(扁平化棋局) C语言实现

    平台是Visual studio 2013 windows8.1  64位 先来一个效果图吧,原先是挺清晰的,但是200K以上不能上传,所以搞模糊了,这个界面是扁平风格的,个人感觉不错,很佩服作者,我 ...

  7. 象棋c语言算法,中国象棋的算法是怎样的?

    int StepJudge(int oldx,int oldy,int nowx,int nowy) /* oldx,oldy 棋字原来位置 */ /* oldx,oldy 棋字新位置 */ /* 判 ...

  8. Photoshop cc 2018下载地址及安装教程(mac+windows全版本,包括最新2023)

    Photoshop cc 2018软件介绍: Adobe公司2017年10月份发布了Photoshop cc 2018,简称PS cc 2018,PS cc 2018功能更强大,界面更美观,运行更流畅 ...

  9. 基于Java的中国象棋游戏的设计与实现

    技术:Java等 摘要: 近些年,Java技术日趋成熟,它的跨平台性,健壮性以及使用人数的增多都表明了它的受欢迎程度不断攀升,因此选用了Java语言作为中国象棋游戏的开发语言.并且中国象棋文化源远流长 ...

最新文章

  1. 受用一生的高效PyCharm使用技巧(二)
  2. Mybatis 工作总结 持续更新
  3. 前端学习(3026):vue+element今日头条管理-调整外观
  4. 计算机科学与导论期末论文,计算机科学与导论论文3
  5. 深度揭秘:腾讯存储技术发展史
  6. 数据库 查询XML XQuery
  7. 元宵节正月十五|设计师正需要的图片素材看这里
  8. 5年了...Capstone 终于升级到4.0!
  9. mysql dump 主从_mysqldump导出数据中带主从同步的状态信息参数:master-data和dump-slave...
  10. 推荐5款超实用的Chrome广告拦截插件
  11. 计算机大类专业学习c语言之重要性
  12. pdf文件如何在线转换为jpg图片 1
  13. Numpy 用 npy/npz 文件保存与载入数据
  14. 这些CAD制图初学入门问题你遇到过吗?CAD制图初学入门全攻略!
  15. 什么是bug(软件缺陷)
  16. 为什么发音要浊化(sp、st、sk)
  17. layui laydate设置最小时间为当前时间
  18. 根据Box-Muller变换原理利用均匀分布的随机变量生成二维柯西分布
  19. 【MySQL】 ---- 共享锁、独占锁、行锁、表锁
  20. vue结合百度地图绘制工具遇到的问题及解决方案(多边形编辑状态下形状显示不全、marker点添加事件无效)

热门文章

  1. matplotlib中文乱码解决及plt.rcParams参数的使用
  2. 为什么PCB要沉金?
  3. java代码自动抠图_人人可用的在线抠图,AI自动化的那种!北大校友算法玩出新高度...
  4. 用 Rails 搭建微信公众平台 API
  5. ubantu 系统分区介绍
  6. wpa_supplicant 之检测外网连接
  7. WIN11系统安装Linux子系统的方法
  8. 蚂蚁算法C语言解决,蚂蚁优化算法在解决CVRP中的应用
  9. 托勒密天文学与希腊化科学
  10. 宏的优缺点宏的替代技术