一个自己编写的象棋程序,可实现走棋谱(如炮二平五),工程完成度%96,跟大家分享一下,下一步要做残局,欢迎交流

 



#include<stdio.h>
#include<math.h>
#include <stdlib.h>
#include<string.h>
char qipan[10][9]={{'A','B','C','D','E','D','C','B','A'},{'+','+','+','+','+','+','+','+','+'},
{'+','F','+','+','+','+','+','F','+'},{'G','+','G','+','G','+','G','+','G'},
{'+','+','+','+','+','+','+','+','+'},{'+','+','+','+','+','+','+','+','+'},
{'g','+','g','+','g','+','g','+','g'},{'+','f','+','+','+','+','+','f','+'},
{'+','+','+','+','+','+','+','+','+'},{'a','b','c','d','e','d','c','b','a'}};
char a,b,c,d,e,k,f,g,A,B,C,D,E,F,G;
int i,j,m,n,q,x,y,flag,ret,loop;
int step=0;
char qipu[4][4];
char sigezi[4][4];
char hehe[4][4]={"呵","呵","呵","呵"};
int che(),ma(),xiang(),shi(),jiang(),bing(),pao();
static const char hanzi[32][4]={"车","马","炮","相","士","帅","兵","車","馬","砲","象","仕","将","卒","进","退","平","前","后","中","一","二","三","四","五","六","七","八","九","十","零"," "};
void**qipan_init()
{
 
 for(i=0;i<10;i++){
  printf("%4d",i);
  for(j=0;j<9;j++){
   switch(qipan[i][j]){
   case 'a':
    printf("%4s",hanzi[0]);break;
   case 'b':
    printf("%4s",hanzi[1]);break;
   case 'f':
    printf("%4s",hanzi[2]);break;
   case 'c':
    printf("%4s",hanzi[3]);break;
   case 'd':
    printf("%4s",hanzi[4]);break;
   case 'e':
    printf("%4s",hanzi[5]);break;
   case 'g':
    printf("%4s",hanzi[6]);break;
   case 'A':
    printf("%4s",hanzi[7]);break;
   case 'B':
    printf("%4s",hanzi[8]);break;
   case 'F':
    printf("%4s",hanzi[9]);break;
   case 'C':
    printf("%4s",hanzi[10]);break;
   case 'D':
    printf("%4s",hanzi[11]);break;
   case 'E':
    printf("%4s",hanzi[12]);break;
   case 'G':
    printf("%4s",hanzi[13]);break;
   case '+':
    printf("%4s",hanzi[31]);break;
  }
   if(j==8)
    printf("\n\n");
  }
 }
  printf("%4c   0   1   2   3   4   5   6   7   8\n",1);
  printf("\n");
  return (char**)qipan;
}
void print(int M,int N,int X,int Y)
{
 qipan[10][9];
 qipan[X][Y]=qipan[M][N];
 qipan[M][N]='+';
 for(i=0;i<10;i++){
  printf("%4d",i);
  for(j=0;j<9;j++){
   switch(qipan[i][j]){
   case 'a':
    printf("%4s",hanzi[0]);break;
   case 'b':
    printf("%4s",hanzi[1]);break;
   case 'f':
    printf("%4s",hanzi[2]);break;
   case 'c':
    printf("%4s",hanzi[3]);break;
   case 'd':
    printf("%4s",hanzi[4]);break;
   case 'e':
    printf("%4s",hanzi[5]);break;
   case 'g':
    printf("%4s",hanzi[6]);break;
   case 'A':
    printf("%4s",hanzi[7]);break;
   case 'B':
    printf("%4s",hanzi[8]);break;
   case 'F':
    printf("%4s",hanzi[9]);break;
   case 'C':
    printf("%4s",hanzi[10]);break;
   case 'D':
    printf("%4s",hanzi[11]);break;
   case 'E':
    printf("%4s",hanzi[12]);break;
   case 'G':
    printf("%4s",hanzi[13]);break;
   case '+':
    printf("%4s",hanzi[31]);break;
  }
   if(j==8)
    printf("\n\n");
  }
 }
  printf("%4c   0   1   2   3   4   5   6   7   8\n",1);
  printf("\n");
}
void zouzi_hou1()//车帅炮兵
{
 if(strcmp(sigezi[2],hanzi[14])==0){
  if(strcmp(sigezi[3],hanzi[20])==0){
   y=n;
   x=m-1;
  }
  else if(strcmp(sigezi[3],hanzi[21])==0){
   y=n;
   x=m-2;
  }
  else if(strcmp(sigezi[3],hanzi[22])==0){
   y=n;
   x=m-3;
  }
  else if(strcmp(sigezi[3],hanzi[23])==0){
   y=n;
   x=m-4;
  }
  else if(strcmp(sigezi[3],hanzi[24])==0){
   y=n;
   x=m-5;
  }
  else if(strcmp(sigezi[3],hanzi[25])==0){
   y=n;
   x=m-6;
  }
  else if(strcmp(sigezi[3],hanzi[26])==0){
   y=n;
   x=m-7;
  }
  else if(strcmp(sigezi[3],hanzi[27])==0){
   y=n;
   x=m-8;
  }
  else if(strcmp(sigezi[3],hanzi[28])==0){
   y=n;
   x=m-9;
  }
 }
 else if(strcmp(sigezi[2],hanzi[15])==0){
  if(strcmp(sigezi[3],hanzi[20])==0){
   y=n;
   x=m+1;
  }
  else if(strcmp(sigezi[3],hanzi[21])==0){
   y=n;
   x=m+2;
  }
  else if(strcmp(sigezi[3],hanzi[22])==0){
   y=n;
   x=m+3;
  }
  else if(strcmp(sigezi[3],hanzi[23])==0){
   y=n;
   x=m+4;
  }
  else if(strcmp(sigezi[3],hanzi[24])==0){
   y=n;
   x=m+5;
  }
  else if(strcmp(sigezi[3],hanzi[25])==0){
   y=n;
   x=m+6;
  }
  else if(strcmp(sigezi[3],hanzi[26])==0){
   y=n;
   x=m+7;
  }
  else if(strcmp(sigezi[3],hanzi[27])==0){
   y=n;
   x=m+8;
  }
  else if(strcmp(sigezi[3],hanzi[28])==0){
   y=n;
   x=m+9;
  }
 }
 else if(strcmp(sigezi[2],hanzi[16])==0){
  if(strcmp(sigezi[3],hanzi[20])==0){
   y=8;
   x=m;
  }
  else if(strcmp(sigezi[3],hanzi[21])==0){
   y=7;
   x=m;
  }
  else if(strcmp(sigezi[3],hanzi[22])==0){
   y=6;
   x=m;
  }
  else if(strcmp(sigezi[3],hanzi[23])==0){
   y=5;
   x=m;
  }
  else if(strcmp(sigezi[3],hanzi[24])==0){
   y=4;
   x=m;
  }
  else if(strcmp(sigezi[3],hanzi[25])==0){
   y=3;
   x=m;
  }
  else if(strcmp(sigezi[3],hanzi[26])==0){
   y=2;
   x=m;
  }
  else if(strcmp(sigezi[3],hanzi[27])==0){
   y=1;
   x=m;
  }
  else if(strcmp(sigezi[3],hanzi[28])==0){
   y=0;
   x=m;
  }
 }
}
void zouzi_hou2()//马
{
  if(strcmp(sigezi[3],hanzi[20])==0){
   y=8;
  }
  else if(strcmp(sigezi[3],hanzi[21])==0){
   y=7;
  }
  else if(strcmp(sigezi[3],hanzi[22])==0){
   y=6;
  }
  else if(strcmp(sigezi[3],hanzi[23])==0){
   y=5;
  }
  else if(strcmp(sigezi[3],hanzi[24])==0){
   y=4;
  }
  else if(strcmp(sigezi[3],hanzi[25])==0){
   y=3;
  }
  else if(strcmp(sigezi[3],hanzi[26])==0){
   y=2;
  }
  else if(strcmp(sigezi[3],hanzi[27])==0){
   y=1;
  }
  else if(strcmp(sigezi[3],hanzi[28])==0){
   y=0;
  }
 if(strcmp(sigezi[2],hanzi[14])==0){
  if(abs(n-y)==1)
    x=m-2;
  else if(abs(n-y)==2)
    x=m-1;
 }
 else if(strcmp(sigezi[2],hanzi[15])==0){
  if(abs(n-y)==1)
    x=m+2;
  else if(abs(n-y)==2)
    x=m+1;
 }
}
void zouzi_hou3()
{
  if(strcmp(sigezi[3],hanzi[20])==0){
   y=8;
  }
  else if(strcmp(sigezi[3],hanzi[21])==0){
   y=7;
  }
  else if(strcmp(sigezi[3],hanzi[22])==0){
   y=6;
  }
  else if(strcmp(sigezi[3],hanzi[23])==0){
   y=5;
  }
  else if(strcmp(sigezi[3],hanzi[24])==0){
   y=4;
  }
  else if(strcmp(sigezi[3],hanzi[25])==0){
   y=3;
  }
  else if(strcmp(sigezi[3],hanzi[26])==0){
   y=2;
  }
  else if(strcmp(sigezi[3],hanzi[27])==0){
   y=1;
  }
  else if(strcmp(sigezi[3],hanzi[28])==0){
   y=0;
  }
 if(strcmp(sigezi[2],hanzi[14])==0){
   x=m-2;
 }
 else if(strcmp(sigezi[2],hanzi[15])==0){
   x=m+2;
 }
}
void zouzi_hou4()
{
  if(strcmp(sigezi[3],hanzi[20])==0){
   y=8;
  }
  else if(strcmp(sigezi[3],hanzi[21])==0){
   y=7;
  }
  else if(strcmp(sigezi[3],hanzi[22])==0){
   y=6;
  }
  else if(strcmp(sigezi[3],hanzi[23])==0){
   y=5;
  }
  else if(strcmp(sigezi[3],hanzi[24])==0){
   y=4;
  }
  else if(strcmp(sigezi[3],hanzi[25])==0){
   y=3;
  }
  else if(strcmp(sigezi[3],hanzi[26])==0){
   y=2;
  }
  else if(strcmp(sigezi[3],hanzi[27])==0){
   y=1;
  }
  else if(strcmp(sigezi[3],hanzi[28])==0){
   y=0;
  }
 if(strcmp(sigezi[2],hanzi[14])==0){
   x=m-1;
 }
 else if(strcmp(sigezi[2],hanzi[15])==0){
   x=m+1;
 }
}
void zouzi_qian()
{
  int w;
  w=0;
   if(strcmp(sigezi[1],hanzi[20])==0)
    n=8;
   else if(strcmp(sigezi[1],hanzi[21])==0)
    n=7;
   else if(strcmp(sigezi[1],hanzi[22])==0)
    n=6;
   else if(strcmp(sigezi[1],hanzi[23])==0)
    n=5;
   else if(strcmp(sigezi[1],hanzi[24])==0)
    n=4;
   else if(strcmp(sigezi[1],hanzi[25])==0)
    n=3;
   else if(strcmp(sigezi[1],hanzi[26])==0)
    n=2;
   else if(strcmp(sigezi[1],hanzi[27])==0)
    n=1;
   else if(strcmp(sigezi[1],hanzi[28])==0)
    n=0;
  {
   if(strcmp(sigezi[0],hanzi[0])==0){
    for(q=0;q<10;q++){
     if(qipan[q][n]=='a')
      break;
     }
    m=q;
    zouzi_hou1();
   }
   else if(strcmp(sigezi[0],hanzi[1])==0){
    for(q=0;q<10;q++){
     if(qipan[q][n]=='b')
      break;
     }
    m=q;
    zouzi_hou2();
   }
   else if(strcmp(sigezi[0],hanzi[2])==0){
    for(q=0;q<10;q++){
     if(qipan[q][n]=='f')
      break;
     }
    m=q;
    zouzi_hou1();
   }
   else if(strcmp(sigezi[0],hanzi[3])==0){
    for(q=0;q<10;q++){
     if(qipan[q][n]=='c')
      break;
     }
    m=q;
    zouzi_hou3();
   }
   else if(strcmp(sigezi[0],hanzi[4])==0){
    for(q=0;q<10;q++){
     if(qipan[q][n]=='d')
      break;
     }
    m=q;
    zouzi_hou4();
   }
   else if(strcmp(sigezi[0],hanzi[5])==0){
    for(q=0;q<10;q++){
     if(qipan[q][n]=='e')
      break;
     }
    m=q;
    zouzi_hou1();
   }
   else if(strcmp(sigezi[0],hanzi[6])==0){
    for(q=0;q<10;q++){
     if(qipan[q][n]=='g')
      break;
     }
    m=q;
    zouzi_hou1();
   }
  }
  if(strcmp(sigezi[1],hanzi[0])==0){
   if(strcmp(sigezi[0],hanzi[17])==0){
    for(i=0;i<10;i++){
     for(j=0;j<9;j++){
      if(qipan[i][j]=='a'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   else if(strcmp(sigezi[0],hanzi[18])==0){
    for(i=9;i>=0;i--){
     for(j=8;j>=0;j--){
      if(qipan[i][j]=='a'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   zouzi_hou1();
  }
  else if(strcmp(sigezi[1],hanzi[1])==0){
   if(strcmp(sigezi[0],hanzi[17])==0){
    for(i=0;i<10;i++){
     for(j=0;j<9;j++){
      if(qipan[i][j]=='b'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   else if(strcmp(sigezi[0],hanzi[18])==0){
    for(i=9;i>=0;i--){
     for(j=8;j>=0;j--){
      if(qipan[i][j]=='b'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   zouzi_hou2();
  }
  else if(strcmp(sigezi[1],hanzi[2])==0){
   if(strcmp(sigezi[0],hanzi[17])==0){
    for(i=0;i<10;i++){
     for(j=0;j<9;j++){
      if(qipan[i][j]=='f'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   else if(strcmp(sigezi[0],hanzi[18])==0){
    for(i=9;i>=0;i--){
     for(j=8;j>=0;j--){
      if(qipan[i][j]=='f'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   zouzi_hou1();
  }
  else if(strcmp(sigezi[1],hanzi[3])==0){
   if(strcmp(sigezi[0],hanzi[17])==0){
    for(i=0;i<10;i++){
     for(j=0;j<9;j++){
      if(qipan[i][j]=='c'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   else if(strcmp(sigezi[0],hanzi[18])==0){
    for(i=9;i>=0;i--){
     for(j=8;j>=0;j--){
      if(qipan[i][j]=='c'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   zouzi_hou3();
  }
  else if(strcmp(sigezi[1],hanzi[4])==0){
   if(strcmp(sigezi[0],hanzi[17])==0){
    for(i=0;i<10;i++){
     for(j=0;j<9;j++){
      if(qipan[i][j]=='d'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   else if(strcmp(sigezi[0],hanzi[18])==0){
    for(i=9;i>=0;i--){
     for(j=8;j>=0;j--){
      if(qipan[i][j]=='d'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   zouzi_hou4();
  }
  else if(strcmp(sigezi[1],hanzi[5])==0){
   if(strcmp(sigezi[0],hanzi[17])==0){
    for(i=0;i<10;i++){
     for(j=0;j<9;j++){
      if(qipan[i][j]=='e'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   else if(strcmp(sigezi[0],hanzi[18])==0){
    for(i=9;i>=0;i--){
     for(j=8;j>=0;j--){
      if(qipan[i][j]=='e'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   zouzi_hou1();
  }
  else if(strcmp(sigezi[1],hanzi[6])==0){
   if(strcmp(sigezi[0],hanzi[17])==0){
    for(i=0;i<10;i++){
     for(j=0;j<9;j++){
      if(qipan[i][j]=='g'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   else if(strcmp(sigezi[0],hanzi[18])==0){
    for(i=9;i>=0;i--){
     for(j=8;j>=0;j--){
      if(qipan[i][j]=='g'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   zouzi_hou1();
  }
}
void duilian()
{
 int w;
 for(i=0;i<10;i++)
  for(j=0;j<9;j++){
   if(qipan[i][j]=='E')
    for(w=1;w<10;w++){
     if(qipan[i+w][j]!='+'){
      if(qipan[i+w][j]=='e'){
       if(step%2==0){
        printf("老将对脸啦!小黑胜利!!\n");
        for(;;)
          getchar();
       }
       else if(step%2==1){
        printf("老将对脸啦!小红胜利!!\n");
        for(;;)
          getchar();
       }
      }
      else
       break;
     }
    }
  }
}

void hzouzi_hou1()//黑車将砲卒
{
 if(strcmp(sigezi[2],hanzi[14])==0){
  if(strcmp(sigezi[3],hanzi[20])==0){
   y=n;
   x=m+1;
  }
  else if(strcmp(sigezi[3],hanzi[21])==0){
   y=n;
   x=m+2;
  }
  else if(strcmp(sigezi[3],hanzi[22])==0){
   y=n;
   x=m+3;
  }
  else if(strcmp(sigezi[3],hanzi[23])==0){
   y=n;
   x=m+4;
  }
  else if(strcmp(sigezi[3],hanzi[24])==0){
   y=n;
   x=m+5;
  }
  else if(strcmp(sigezi[3],hanzi[25])==0){
   y=n;
   x=m+6;
  }
  else if(strcmp(sigezi[3],hanzi[26])==0){
   y=n;
   x=m+7;
  }
  else if(strcmp(sigezi[3],hanzi[27])==0){
   y=n;
   x=m+8;
  }
  else if(strcmp(sigezi[3],hanzi[28])==0){
   y=n;
   x=m+9;
  }
 }
 else if(strcmp(sigezi[2],hanzi[15])==0){
  if(strcmp(sigezi[3],hanzi[20])==0){
   y=n;
   x=m-1;
  }
  else if(strcmp(sigezi[3],hanzi[21])==0){
   y=n;
   x=m-2;
  }
  else if(strcmp(sigezi[3],hanzi[22])==0){
   y=n;
   x=m-3;
  }
  else if(strcmp(sigezi[3],hanzi[23])==0){
   y=n;
   x=m-4;
  }
  else if(strcmp(sigezi[3],hanzi[24])==0){
   y=n;
   x=m-5;
  }
  else if(strcmp(sigezi[3],hanzi[25])==0){
   y=n;
   x=m-6;
  }
  else if(strcmp(sigezi[3],hanzi[26])==0){
   y=n;
   x=m-7;
  }
  else if(strcmp(sigezi[3],hanzi[27])==0){
   y=n;
   x=m-8;
  }
  else if(strcmp(sigezi[3],hanzi[28])==0){
   y=n;
   x=m-9;
  }
 }
 else if(strcmp(sigezi[2],hanzi[16])==0){
  if(strcmp(sigezi[3],hanzi[20])==0){
   y=0;
   x=m;
  }
  else if(strcmp(sigezi[3],hanzi[21])==0){
   y=1;
   x=m;
  }
  else if(strcmp(sigezi[3],hanzi[22])==0){
   y=2;
   x=m;
  }
  else if(strcmp(sigezi[3],hanzi[23])==0){
   y=3;
   x=m;
  }
  else if(strcmp(sigezi[3],hanzi[24])==0){
   y=4;
   x=m;
  }
  else if(strcmp(sigezi[3],hanzi[25])==0){
   y=5;
   x=m;
  }
  else if(strcmp(sigezi[3],hanzi[26])==0){
   y=6;
   x=m;
  }
  else if(strcmp(sigezi[3],hanzi[27])==0){
   y=7;
   x=m;
  }
  else if(strcmp(sigezi[3],hanzi[28])==0){
   y=8;
   x=m;
  }
 }
}
void hzouzi_hou2()//黑馬
{
  if(strcmp(sigezi[3],hanzi[20])==0){
   y=0;
  }
  else if(strcmp(sigezi[3],hanzi[21])==0){
   y=1;
  }
  else if(strcmp(sigezi[3],hanzi[22])==0){
   y=2;
  }
  else if(strcmp(sigezi[3],hanzi[23])==0){
   y=3;
  }
  else if(strcmp(sigezi[3],hanzi[24])==0){
   y=4;
  }
  else if(strcmp(sigezi[3],hanzi[25])==0){
   y=5;
  }
  else if(strcmp(sigezi[3],hanzi[26])==0){
   y=6;
  }
  else if(strcmp(sigezi[3],hanzi[27])==0){
   y=7;
  }
  else if(strcmp(sigezi[3],hanzi[28])==0){
   y=8;
  }
 if(strcmp(sigezi[2],hanzi[14])==0){
  if(abs(n-y)==1)
    x=m+2;
  else if(abs(n-y)==2)
    x=m+1;
 }
 else if(strcmp(sigezi[2],hanzi[15])==0){
  if(abs(n-y)==1)
    x=m-2;
  else if(abs(n-y)==2)
    x=m-1;
 }
}
void hzouzi_hou3()//黑相
{
  if(strcmp(sigezi[3],hanzi[20])==0){
   y=0;
  }
  else if(strcmp(sigezi[3],hanzi[21])==0){
   y=1;
  }
  else if(strcmp(sigezi[3],hanzi[22])==0){
   y=2;
  }
  else if(strcmp(sigezi[3],hanzi[23])==0){
   y=3;
  }
  else if(strcmp(sigezi[3],hanzi[24])==0){
   y=4;
  }
  else if(strcmp(sigezi[3],hanzi[25])==0){
   y=5;
  }
  else if(strcmp(sigezi[3],hanzi[26])==0){
   y=6;
  }
  else if(strcmp(sigezi[3],hanzi[27])==0){
   y=7;
  }
  else if(strcmp(sigezi[3],hanzi[28])==0){
   y=8;
  }
 if(strcmp(sigezi[2],hanzi[14])==0){
   x=m+2;
 }
 else if(strcmp(sigezi[2],hanzi[15])==0){
   x=m-2;
 }
}
void hzouzi_hou4()//黑仕
{
  if(strcmp(sigezi[3],hanzi[20])==0){
   y=0;
  }
  else if(strcmp(sigezi[3],hanzi[21])==0){
   y=1;
  }
  else if(strcmp(sigezi[3],hanzi[22])==0){
   y=2;
  }
  else if(strcmp(sigezi[3],hanzi[23])==0){
   y=3;
  }
  else if(strcmp(sigezi[3],hanzi[24])==0){
   y=4;
  }
  else if(strcmp(sigezi[3],hanzi[25])==0){
   y=5;
  }
  else if(strcmp(sigezi[3],hanzi[26])==0){
   y=6;
  }
  else if(strcmp(sigezi[3],hanzi[27])==0){
   y=7;
  }
  else if(strcmp(sigezi[3],hanzi[28])==0){
   y=8;
  }
 if(strcmp(sigezi[2],hanzi[14])==0){
   x=m+1;
 }
 else if(strcmp(sigezi[2],hanzi[15])==0){
   x=m-1;
 }
}void hzouzi_qian()
{
  int w;
  w=0;
   if(strcmp(sigezi[1],hanzi[20])==0)
    n=0;
   else if(strcmp(sigezi[1],hanzi[21])==0)
    n=1;
   else if(strcmp(sigezi[1],hanzi[22])==0)
    n=2;
   else if(strcmp(sigezi[1],hanzi[23])==0)
    n=3;
   else if(strcmp(sigezi[1],hanzi[24])==0)
    n=4;
   else if(strcmp(sigezi[1],hanzi[25])==0)
    n=5;
   else if(strcmp(sigezi[1],hanzi[26])==0)
    n=6;
   else if(strcmp(sigezi[1],hanzi[27])==0)
    n=7;
   else if(strcmp(sigezi[1],hanzi[28])==0)
    n=8;
  {
   if(strcmp(sigezi[0],hanzi[7])==0){
    for(q=0;q<10;q++){
     if(qipan[q][n]=='A')
      break;
     }
    m=q;
    hzouzi_hou1();
   }
   else if(strcmp(sigezi[0],hanzi[8])==0){
    for(q=0;q<10;q++){
     if(qipan[q][n]=='B')
      break;
     }
    m=q;
    hzouzi_hou2();
   }
   else if(strcmp(sigezi[0],hanzi[9])==0){
    for(q=0;q<10;q++){
     if(qipan[q][n]=='F')
      break;
     }
    m=q;
    hzouzi_hou1();
   }
   else if(strcmp(sigezi[0],hanzi[10])==0){
    for(q=0;q<10;q++){
     if(qipan[q][n]=='C')
      break;
     }
    m=q;
    hzouzi_hou3();
   }
   else if(strcmp(sigezi[0],hanzi[11])==0){
    for(q=0;q<10;q++){
     if(qipan[q][n]=='D')
      break;
     }
    m=q;
    hzouzi_hou4();
   }
   else if(strcmp(sigezi[0],hanzi[12])==0){
    for(q=0;q<10;q++){
     if(qipan[q][n]=='E')
      break;
     }
    m=q;
    hzouzi_hou1();
   }
   else if(strcmp(sigezi[0],hanzi[13])==0){
    for(q=0;q<10;q++){
     if(qipan[q][n]=='G')
      break;
     }
    m=q;
    hzouzi_hou1();
   }
  }
  if(strcmp(sigezi[1],hanzi[7])==0){
   if(strcmp(sigezi[0],hanzi[17])==0){
    for(i=9;i>=0;i--){
     for(j=8;j>=0;j--){
      if(qipan[i][j]=='A'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   else if(strcmp(sigezi[0],hanzi[18])==0){
    for(i=0;i<10;i++){
     for(j=0;j<9;j++){
      if(qipan[i][j]=='A'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   hzouzi_hou1();
  }
  else if(strcmp(sigezi[1],hanzi[8])==0){
   if(strcmp(sigezi[0],hanzi[17])==0){
    for(i=9;i>=0;i--){
     for(j=8;j>=0;j--){
      if(qipan[i][j]=='B'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   else if(strcmp(sigezi[0],hanzi[18])==0){
    for(i=0;i<10;i++){
     for(j=0;j<9;j++){
      if(qipan[i][j]=='B'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   hzouzi_hou2();
  }
  else if(strcmp(sigezi[1],hanzi[9])==0){
   if(strcmp(sigezi[0],hanzi[17])==0){
    for(i=9;i>=0;i--){
     for(j=8;j>=0;j--){
      if(qipan[i][j]=='F'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   else if(strcmp(sigezi[0],hanzi[18])==0){
    for(i=0;i<10;i++){
     for(j=0;j<9;j++){
      if(qipan[i][j]=='F'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   hzouzi_hou1();
  }
  else if(strcmp(sigezi[1],hanzi[10])==0){
   if(strcmp(sigezi[0],hanzi[17])==0){
    for(i=9;i>=0;i--){
     for(j=8;j>=0;j--){
      if(qipan[i][j]=='C'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   else if(strcmp(sigezi[0],hanzi[18])==0){
    for(i=0;i<10;i++){
     for(j=0;j<9;j++){
      if(qipan[i][j]=='C'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   hzouzi_hou3();
  }
  else if(strcmp(sigezi[1],hanzi[11])==0){
   if(strcmp(sigezi[0],hanzi[17])==0){
    for(i=9;i>=0;i--){
     for(j=8;j>=0;j--){
      if(qipan[i][j]=='D'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   else if(strcmp(sigezi[0],hanzi[18])==0){
    for(i=0;i<10;i++){
     for(j=0;j<9;j++){
      if(qipan[i][j]=='D'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   hzouzi_hou4();
  }
  else if(strcmp(sigezi[1],hanzi[12])==0){
   if(strcmp(sigezi[0],hanzi[17])==0){
    for(i=9;i>=0;i--){
     for(j=8;j>=0;j--){
      if(qipan[i][j]=='E'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   else if(strcmp(sigezi[0],hanzi[18])==0){
    for(i=0;i<10;i++){
     for(j=0;j<9;j++){
      if(qipan[i][j]=='E'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   hzouzi_hou1();
  }
  else if(strcmp(sigezi[1],hanzi[13])==0){
   if(strcmp(sigezi[0],hanzi[17])==0){
    for(i=9;i>=0;i--){
     for(j=8;j>=0;j--){
      if(qipan[i][j]=='G'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   else if(strcmp(sigezi[0],hanzi[18])==0){
    for(i=0;i<10;i++){
     for(j=0;j<9;j++){
      if(qipan[i][j]=='G'){
       w=1;
       break;
      }
     }
     if(w==1){
      n=j;
      m=i;
      break;
     }
    }
   }
   hzouzi_hou1();
  }
}

void hong()
 {
  char buf[100];
  int pos;
  char *s=buf;
   printf("瞅啥呢?小红走子啊:");
   fflush(stdin);
   fgets(buf,100,stdin);
  if(sscanf(s,"%d%d%d%d",&n,&m,&y,&x)==4)
   printf("输入的是坐标!\n");
  else{
   for(loop=0;loop<4;loop++){
    if(sscanf(s,"%2s%n",qipu[loop], &pos) != 1) { 
     return;
    }
    s+=pos;
    strcpy(sigezi[loop],hehe[loop]);
     for(k=0;k<32;k++){
      if(strcmp(hanzi[k],qipu[loop])==0){
       strcpy(sigezi[loop],hanzi[k]);
       break;
      }
     }
   }
   zouzi_qian();
  }
   flag=0;
   if((m<10)&&(m>=0)&&(n<9)&&(n>=0)&&(x<10)&&(x>=0)&&(y<9)&&(y>=0)){
    switch(qipan[m][n]){
     case'a':
      che(m,n,x,y);flag=che(m,n,x,y);break;
     case'b':
      ma(m,n,x,y);flag=ma(m,n,x,y);break;
     case'c':
      xiang(m,n,x,y);flag=xiang(m,n,x,y);break;
     case'd':
      shi(m,n,x,y);flag=shi(m,n,x,y);break;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
     case'e':
      jiang(m,n,x,y);flag=jiang(m,n,x,y);break;
     case'f':
      pao(m,n,x,y);flag=pao(m,n,x,y);break;
     case'g':
      bing(m,n,x,y);flag=bing(m,n,x,y);break;;
     default:flag=0;printf("傻啊?走错子啦!\n");
     }
   }
   if(qipan[x][y]!='a'&&qipan[x][y]!='b'&&qipan[x][y]!='c'&&qipan[x][y]!='d'&&qipan[x][y]!='e'&&qipan[x][y]!='f'&&qipan[x][y]!='g'){
      if(flag==1){
        if(qipan[x][y]=='E'){
         printf("恭喜大美女小红打败傻冒小黑\n游戏结束\n");
         print(m,n,x,y);
         for(;;)
          getchar();
        }
        print(m,n,x,y); 
        duilian();
        step++;
       }
     }
    else 
     printf("是不是傻?走错啦!重新走\n");
}
void hei()
{
 char buf[100];
  int pos;
  char *s=buf;
   printf("别瞅啦!小黑快走子:");
    fflush(stdin);
    fgets(buf,100,stdin);
  if(sscanf(s,"%d%d%d%d",&n,&m,&y,&x)==4)
   printf("输入的是坐标!\n");
  else{
   for(loop=0;loop<4;loop++){
    if(sscanf(s,"%2s%n",qipu[loop], &pos) != 1) {
     return;
    }
    s+=pos;
    strcpy(sigezi[loop],hehe[loop]);
    for(k=0;k<32;k++){
     if(strcmp(hanzi[k],qipu[loop])==0){
      strcpy(sigezi[loop],hanzi[k]);
      break;
     }
    }
   }
   hzouzi_qian();
  }
   flag=0;
   if((m<10)&&(m>=0)&&(n<9)&&(n>=0)&&(x<10)&&(x>=0)&&(y<9)&&(y>=0)){
    switch(qipan[m][n]){
     case'A':
      che(m,n,x,y);flag=che(m,n,x,y);break;
     case'B':
      ma(m,n,x,y);flag=ma(m,n,x,y);break;
     case'C':
      xiang(m,n,x,y);flag=xiang(m,n,x,y);break;
     case'D':
      shi(m,n,x,y);flag=shi(m,n,x,y);break;
     case'E':
      jiang(m,n,x,y);flag=jiang(m,n,x,y);break;
     case'F':
      pao(m,n,x,y);flag=pao(m,n,x,y);break;
     case'G':
      bing(m,n,x,y);flag=bing(m,n,x,y);break;
     default:flag=0;printf("傻啊?走错子啦!\n");
     }
    if(qipan[x][y]!='A'&&qipan[x][y]!='B'&&qipan[x][y]!='C'&&qipan[x][y]!='D'&&qipan[x][y]!='E'&&qipan[x][y]!='F'&&qipan[x][y]!='G'){
     if(flag==1){
      if(qipan[x][y]=='e'){
       printf("恭喜颜值王小黑打败傻冒小红\n游戏结束\n");
       print(m,n,x,y);
       for(;;)
        getchar();
      }
      print(m,n,x,y);
      duilian();
      step++;
     }
    }
   }
   else
    printf("是不是傻?走错啦!重新走\n");
}
int main()
{
 printf("      中国象棋   \n    作者——NORMAN\n\n\n");
 qipan_init();
 for(;;){
  for(;step%2==0;){
  hong();
  }
  for(;step%2==1;){
  hei();
  }
 }
}
int che(int M,int N,int X,int Y)
{
 int u,v;
 if(M==X){
  if(N>Y)
   ret=0;
  else if(N<Y)
   ret=1;
  for(v=1;v<abs(N-Y);v++){
   switch(ret){
   case 0:
    if(qipan[M][Y+v]!='+')
     return 0;break;
   case 1:
    if(qipan[M][Y-v]!='+')
     return 0;break;
   }
  }
 }
 else if(N==Y){
  if(M>X)
   ret=0;
  else if(M<X)
   ret=1;
  for(u=1;u<abs(M-X);u++){
   switch(ret){
   case 0:
   if(qipan[X+u][N]!='+')
    return 0;break;
   case 1:
   if(qipan[X-u][N]!='+')
    return 0;break;
   }
  }
 }
 else if(M!=X&&N!=Y)
  return 0;
 return 1;
}
int ma(int M,int N,int X,int Y)
{
 {
  if(X>M&&Y>N)
   ret=0;
  else if(X>M&&Y<N)
   ret=1;
  else if(X<M&&Y>N)
   ret=2;
  else if(X<M&&Y<N)
   ret=3;
 }
 
 if(abs(X-M)==1&&abs(Y-N)==2){
  switch(ret)
  {
   case 0:
   case 2:
    if(qipan[M][N+1]!='+')
     return 0;break;
   case 1:
   case 3:
    if(qipan[M][N-1]!='+')
     return 0;break;
  }
 }
 else if(abs(X-M)==2&&abs(Y-N)==1){
  switch(ret)
  {
   case 0:
   case 1:
    if(qipan[M+1][N]!='+')
     return 0;break;
   case 2:
   case 3:
    if(qipan[M-1][N]!='+')
     return 0;break;
  }
 }
 else
  return 0;
 return 1;
}
int xiang(int M,int N,int X,int Y)
{
 {
  if(X>M&&Y>N)
   ret=0;
  else if(X>M&&Y<N)
   ret=1;
  else if(X<M&&Y>N)
   ret=2;
  else if(X<M&&Y<N)
   ret=3;
 }
 if(step%2==0&&x>4||step%2==1&&x<5){
  if(abs(X-M)==2&&abs(Y-N)==2){
    switch(ret){
    case 0:
     if(qipan[M+1][N+1]!='+')
      return 0;break;
    case 1:
     if(qipan[M+1][N-1]!='+')
      return 0;break;
    case 2:
     if(qipan[M-1][N+1]!='+')
      return 0;break;
    case 3:
     if(qipan[M-1][N-1]!='+')
      return 0;break;
    }
  }
  else
   return 0;
  }
 else
  return 0;
 return 1;
}
int shi(int M,int N,int X,int Y)
{
 if(step%2==0&&X>6&&Y<6&&Y>2||step%2==1&&X<3&&Y<6&&Y>2){
  if(abs(X-M)==1&&abs(Y-N)==1)
   return 1;
 }
 return 0;
}
int jiang(int M,int N,int X,int Y)
{
 if(step%2==0&&X>6&&Y<6&&Y>2||step%2==1&&X<3&&Y<6&&Y>2){
  if(abs(X-M)==1||abs(Y-N)==1){
   if(abs(X-M)!=abs(Y-N))
    return 1;
  }
 }
 return 0;
}
int bing(int M,int N,int X,int Y)
{
 if(M>4){
  if(step%2==0&&X==M-1&&N==Y||step%2==1&&X==M+1&&N==Y||step%2==1&&X==M&&N==Y-1||step%2==1&&X==M&&N==Y+1)
   return 1;
  else
   return 0;
 }
 else if(M<5){
  if(step%2==0&&X==M-1&&N==Y||step%2==0&&X==M&&N==Y-1||step%2==0&&X==M&&N==Y+1||step%2==1&&X==M+1&&N==Y)
   return 1;
  else
   return 0;
 }
}
int pao(int M,int N,int X,int Y)
{
 if(qipan[X][Y]=='+')
  che(M,N,X,Y);
 else if(qipan[X][Y]!='+'){
  int z;
  int u,v;
  if(M==X){
   if(N>Y){
    z=0;
    for(v=1;v<abs(N-Y);v++){
     if(qipan[M][Y+v]!='+')
      z++;
    }
    if(z==1)
     return 1;
    else
     return 0;
   }
   if(N<Y){
    z=0;
    for(v=1;v<abs(N-Y);v++){
     if(qipan[M][Y-v]!='+')
      z++;
    }
    if(z==1)
     return 1;
    else
     return 0;
   }
  }
  else if(Y==N){
   if(M>X){
    z=0;
    for(u=1;u<abs(M-X);u++){
     if(qipan[X+u][N]!='+')
      z++;
    }
    if(z==1)
     return 1;
    else
     return 0;
   }
   if(M<X){
    z=0;
    for(u=1;u<abs(M-X);u++){
     if(qipan[X-u][N]!='+')
      z++;
    }
    if(z==1)
     return 1;
    else
     return 0;
   }
  }
  else
   return 0;
 }
}

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值