zoukankan      html  css  js  c++  java
  • 五子棋

    第一次写,写的有点复杂,大家可以帮忙找找问题,简化一些:

    代码:

      1 :#include<stdio.h>
      2 #include<stdlib.h>
      3 #include<conio.h>
      4 #include<string.h>
      5 #define MAXN 15
      6 int chess[MAXN][MAXN];
      7 char map[MAXN*2+1][MAXN*4+3];
      8 int player,Cx,Cy;
      9 int Mx,My;
     10 char *showtext;
     11 int count;
     12 int select,b=0;
     13 int order1,order2;
     14 void copy(char *x,char *y){
     15 while(*y!='')*x++=*y++;
     16 }
     17 void initial(){
     18 showtext="";
     19 count=0;
     20 memset(chess,0,sizeof(chess));
     21 Cx=Cy=MAXN/2;
     22 player=1;
     23 }
     24 char *getmap(int x,int y){
     25 if(chess[x][y]==1)return "";
     26 else if(chess[x][y]==2)return "";
     27 else if(x==0&&y==0)return "";
     28 else if(x==MAXN-1&&y==0)return "";
     29 else if(x==0&&y==MAXN-1)return "";
     30 else if(x==MAXN-1&&y==MAXN-1)return "";
     31 else if(x==0)return "";
     32 else if(x==MAXN-1)return "";
     33 else if(y==0)return "";
     34 else if(y==MAXN-1)return "";
     35 else return ""; 
     36 }
     37 char *getlist(int x,int y){
     38 if(x==Cx){
     39 if(y==Cy)return "";
     40 else if(y==Cy+1)return "";
     41 }
     42 else if(x==Cx+1){
     43 if(y==Cy)return "";
     44 else if(y==Cy+1)return "";
     45 }
     46 return "  ";  
     47 }
     48 void write(char *x){
     49 copy(map[My]+Mx,x);
     50 Mx+=strlen(x);
     51 }
     52 void ln(){Mx=0;My++;}
     53 void show(){
     54 int l=strlen(showtext),i;
     55 int x=MAXN*2-l/2;
     56 if(x%2==1)x++;
     57 copy(map[MAXN]+x,showtext);
     58 if(l%2==1)map[MAXN][x+1]=' ';
     59 system("cls");
     60 for(i=0;i<MAXN*2+1;i++){
     61 printf("%s",map[i]);
     62 if(i<MAXN*2)puts("");
     63 }
     64 }
     65 void print(){int x,y;
     66 Mx=My=0;
     67 for(y=0;y<=MAXN;++y){
     68 for(x=0;x<=MAXN;x++){
     69 write(getlist(x,y));
     70 if(y==0||y==MAXN){
     71 if(x!=MAXN)write("  ");    }
     72 else {/*printf("%d ",x);getch();*/
     73 if(x==MAXN-1||x==0)write("");
     74 else if(x!=MAXN)write("");
     75 }
     76 }
     77 if(y==MAXN)break;
     78 ln();write("  ");
     79 for(x=0;x<MAXN;x++){
     80 write(getmap(x,y));
     81 if(x!=MAXN-1){ 
     82 if(y==0||y==MAXN-1)write("");else write("");}
     83 }ln();
     84 }
     85 
     86 show();
     87 }
     88 int judge(){
     89 if(!chess[Cx][Cy]){chess[Cx][Cy]=player;return 1;}
     90 else return 0;
     91 }
     92 int check(){
     93 int flot=1,i;
     94 for(i=1;i<5;++i)if(Cx+i<MAXN&&chess[Cx+i][Cy]==player)flot++;else break;
     95 for( i=1;i<5;++i)if(Cx-i>=0&&chess[Cx-i][Cy]==player)flot++;else break;
     96 if(flot>=5)return player;flot=1;
     97 for( i=1;i<5;++i)if(Cy+i<MAXN&&chess[Cx][Cy+i]==player)flot++;else break;
     98 for( i=1;i<5;i++)if(Cy-i>=0&&chess[Cx][Cy-i]==player)flot++;else break;
     99 /*for(int i=1;i<5;++i)printf("chess[%d][%d]=%d ",Cx,Cy+i,chess[Cx][Cy+i]);
    100 for(int i=1;i<5;++i)printf("chess[%d][%d]=%d ",Cx,Cy-i,chess[Cx][Cy-i]);
    101 printf("**%d %d ",flot,player);getch();*/
    102 if(flot>=5)return player;flot=1;
    103 for( i=1;i<5;++i)if(Cy+i<MAXN&&Cx+i<MAXN&&chess[Cx+i][Cy+i]==player)flot++;else break;
    104 for( i=1;i<5;++i)if(Cy-i>=0&&Cx-i>=0&&chess[Cx-i][Cy-i]==player)flot++;else break;
    105 if(flot>=5)return player;flot=1;
    106 for( i=1;i<5;++i)if(Cy+i<MAXN&&Cx-i>=0&&chess[Cx-i][Cy+i]==player)flot++;else break;
    107 for( i=1;i<5;++i)if(Cy-i>=0&&Cx+i<MAXN&&chess[Cx+i][Cy-i]==player)flot++;else break;
    108 if(flot>=5)return player;
    109 return 0;
    110 }
    111 int defense(int x,int y){int i,j,flot=0,t=0,temp1,temp2;//t是空格数 
    112 if(chess[x][y]==1)flot++;
    113 if(flot){
    114 for(i=1;i<5;++i)if(x+i<MAXN&&chess[x+i][y]==1)flot++;else if(!chess[x+i][y]&&t+1<2)t++,temp1=i;else break;if(!t)temp1=i;t=0;
    115 for(j=1;i<5;++j)if(x-j>=0&&chess[x-j][y]==1)flot++;else if(!chess[x-j][y]&&t+1<2)t++,temp2=j;else break;if(!t)temp2=j;t=0;
    116     if(flot>=4){i=temp1;j=temp2;//printf("1%d ",flot);getch(); 
    117         if(x+i<MAXN)if(!chess[x+i][y]){x+=i;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    118         if(x-j>=0)if(!chess[x-j][y]){x-=j;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    119     }
    120     }flot=0;
    121     if(chess[x][y]==1)flot++;
    122     if(flot){
    123     for(i=1;i<5;++i)if(y+i<MAXN&&chess[x][y+i]==1)flot++;else if(!chess[x][y+i]&&t+1<2)t++,temp1=i;else break;if(!t)temp1=i;t=0;//else if(chess[x][y+i]==1)break;
    124 for(j=1;j<5;j++)if(y-j>=0&&chess[x][y-j]==1)flot++;else if(!chess[x][y-j]&&t+1<2)t++,temp2=j;else break;if(!t)temp2=j;t=0;//else if(chess[x][y-j]==1)break;
    125 if(flot>=4){i=temp1;j=temp2;//printf("2%d ",flot);getch(); 
    126             if(y+i<MAXN)if(!chess[x][y+i]){y+=i;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    127         if(y-j>=0)if(!chess[x][y-j]){y-=j;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    128     }
    129     }flot=0;
    130     if(chess[x][y]==1)flot++;
    131     if(flot){
    132     for(i=1;i<=5;++i)if(y+i<MAXN&&x+i<MAXN&&chess[x+i][y+i]==1)flot++;else if(!chess[x+i][y+i]&&t+1<2)t++,temp1=i;else break;if(!t)temp1=i;t=0;
    133 for(j=1;j<5;++j)if(y-j>=0&&x-j>=0&&chess[x-j][y-j]==1)flot++;else if(!chess[x-j][y-j]&&t+1<2)t++,temp2=j;else break;if(!t)temp2=j;t=0;
    134 if(flot>=4){i=temp1;j=temp2;//printf("3%d ",flot);getch(); 
    135 if(x+i<MAXN&&y+i<MAXN)if(!chess[x+i][y+i]){y+=i;x+=i;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    136     if(x-j>=0&&y-j>=0)if(!chess[x-j][y-j]){y-=j;x-=j;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    137     }
    138     }flot=0;
    139     if(chess[x][y]==1)flot++;
    140     if(flot){
    141     for(i=1;i<5;++i)if(y+i<MAXN&&x-i>=0&&chess[x-i][y+i]==1)flot++;else if(!chess[x-i][y+i]&&t+1<2)t++,temp1=i;else break;if(!t)temp1=i;t=0;
    142 for(j=1;j<5;++j)if(y-j>=0&&x+j<MAXN&&chess[x+j][y-j]==1)flot++;else if(!chess[x+j][y-j]&&t+1<2)t++,temp2=j;else break;if(!t)temp2=j;t=0;
    143 if(flot>=4){i=temp1;j=temp2;//printf("4%d ",flot);getch(); 
    144         if(x+j<MAXN&&y-j>=0)if(!chess[x+j][y-j]){y-=j;x+=j;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    145         if(x-i>=0&&y+i<MAXN)if(!chess[x-i][y+i]){y+=i;x-=i;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    146     }
    147     }
    148     //******************************
    149     if(order1){
    150 flot=0; 
    151 if(chess[x][y]==1)flot++;
    152     if(flot){
    153 for(i=1;i<5;++i)if(x+i<MAXN&&chess[x+i][y]==1)flot++;else if(!chess[x+i][y]&&t+1<2)t++,temp1=i;else break;if(!t)temp1=i;t=0;
    154 for(j=1;i<5;++j)if(x-j>=0&&chess[x-j][y]==1)flot++;else if(!chess[x-j][y]&&t+1<2)t++,temp2=j;else break;t=0;
    155     if(flot>=3){i=temp1;j=temp2;//printf("5%d ",flot);getch(); 
    156     if(x+i<MAXN)if(!chess[x+i][y]){x+=i;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    157         if(x-j>=0)if(!chess[x-j][y]){x-=j;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    158     }
    159     }flot=0;
    160     if(chess[x][y]==1)flot++;
    161     if(flot){
    162         for(i=1;i<5;++i)if(y+i<MAXN&&chess[x][y+i]==1)flot++;else if(!chess[x][y+i]&&t+1<2)t++,temp1=i;else break;if(!t)temp1=i;t=0;
    163 for(j=1;j<5;j++)if(y-j>=0&&chess[x][y-j]==1)flot++;else if(!chess[x][y-j]&&t+1<2)t++,temp2=j;else break;t=0;
    164 if(flot>=3){i=temp1;j=temp2;//printf("6%d ",flot);getch(); 
    165             if(y+i<MAXN)if(!chess[x][y+i]){y+=i;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    166         if(y-j>=0)if(!chess[x][y-j]){y-=j;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    167     }    
    168     }flot=0;
    169     if(chess[x][y]==1)flot++;
    170     if(flot){
    171     for(i=1;i<=5;++i)if(y+i<MAXN&&x+i<MAXN&&chess[x+i][y+i]==1)flot++;else if(!chess[x+i][y+i]&&t+1<2)t++,temp1=i;else break;if(!t)temp1=i;t=0;
    172 for(j=1;j<5;++j)if(y-j>=0&&x-j>=0&&chess[x-j][y-j]==1)flot++;else if(!chess[x-j][y-j]&&t+1<2)t++,temp2=j;else break;t=0;
    173 if(flot>=3){i=temp1;j=temp2;//printf("7%d ",flot);getch(); 
    174     if(x+i<MAXN&&y+i<MAXN)if(!chess[x+i][y+i]){y+=i;x+=i;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    175     if(x-j>=0&&y-j>=0)if(!chess[x-j][y-j]){y-=j;x-=j;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    176     }
    177     }flot=0;
    178     if(chess[x][y]==1)flot++;
    179     if(flot){
    180     for(i=1;i<5;++i)if(y+i<MAXN&&x-i>=0&&chess[x-i][y+i]==1)flot++;else if(!chess[x-i][y+i]&&t+1<2)t++,temp1=i;else break;if(!t)temp1=i;t=0;
    181 for(j=1;j<5;++j)if(y-j>=0&&x+j<MAXN&&chess[x+j][y-j]==1)flot++;else if(!chess[x+j][y-j]&&t+1<2)t++,temp2=j;else break;t=0;
    182 if(flot>=3){i=temp1;j=temp2;//printf("8%d ",flot);getch(); 
    183             if(x+j<MAXN&&y-j>=0)if(!chess[x+j][y-j]){y-=j;x+=j;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    184         if(x-i>=0&&y+i<MAXN)if(!chess[x-i][y+i]){y+=i;x-=i;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    185     }
    186     }
    187     }
    188     return 0;
    189 }
    190 int attarck(int x,int y)
    191 {
    192 int i,j,flot=0,temp1,temp2,t;
    193 if(chess[x][y]==player)flot++;
    194 if(flot){
    195 for(i=1;i<5;++i)if(x+i<MAXN&&chess[x+i][y]==player)flot++;else if(!chess[x+i][y]&&t+1<2)t++,temp1=i;else break;if(!t)temp1=i;t=0;
    196 for(j=1;i<5;++j)if(x-j>=0&&chess[x-j][y]==player)flot++;else if(!chess[x-j][y]&&t+1<2)t++,temp2=j;else break;if(!t)temp2=j;t=0;
    197     if(flot>=4){i=temp1;j=temp2;
    198         if(x+i<MAXN)if(!chess[x+i][y]){x+=i;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    199         if(x-j>=0)if(!chess[x-j][y]){x-=j;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    200     }
    201     }flot=0;
    202     if(chess[x][y]==player)flot++;
    203     if(flot){
    204     for(i=1;i<5;++i)if(y+i<MAXN&&chess[x][y+i]==player)flot++;else if(!chess[x][y+i]&&t+1<2)t++,temp1=i;else break;if(!t)temp1=i;t=0;//else if(chess[x][y+i]==1)break;
    205 for(j=1;j<5;j++)if(y-j>=0&&chess[x][y-j]==player)flot++;else if(!chess[x][y-j]&&t+1<2)t++,temp2=j;else break;if(!t)temp2=j;t=0;//else if(chess[x][y-j]==1)break;
    206 if(flot>=4){i=temp1;j=temp2;
    207             if(y+i<MAXN)if(!chess[x][y+i]){y+=i;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    208         if(y-j>=0)if(!chess[x][y-j]){y-=j;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    209     }
    210     }flot=0;
    211     if(chess[x][y]==player)flot++;
    212     if(flot){
    213     for(i=1;i<=5;++i)if(y+i<MAXN&&x+i<MAXN&&chess[x+i][y+i]==player)flot++;else if(!chess[x+i][y+i]&&t+1<2)t++,temp1=i;else break;if(!t)temp1=i;t=0;
    214 for(j=1;j<5;++j)if(y-j>=0&&x-j>=0&&chess[x-j][y-j]==player)flot++;else if(!chess[x-j][y-j]&&t+1<2)t++,temp2=j;else break;if(!t)temp2=j;t=0;
    215 if(flot>=4){i=temp1;j=temp2;
    216 if(x+i<MAXN&&y+i<MAXN)if(!chess[x+i][y+i]){y+=i;x+=i;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    217     if(x-j>=0&&y-j>=0)if(!chess[x-j][y-j]){y-=j;x-=j;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    218     }
    219     }flot=0;
    220     if(chess[x][y]==player)flot++;
    221     if(flot){
    222     for(i=1;i<5;++i)if(y+i<MAXN&&x-i>=0&&chess[x-i][y+i]==player)flot++;else if(!chess[x-i][y+i]&&t+1<2)t++,temp1=i;else break;if(!t)temp1=i;t=0;
    223 for(j=1;j<5;++j)if(y-j>=0&&x+j<MAXN&&chess[x+j][y-j]==player)flot++;else if(!chess[x+j][y-j]&&t+1<2)t++,temp2=j;else break;if(!t)temp2=j;t=0;
    224 if(flot>=4){i=temp1;j=temp2;
    225         if(x+j<MAXN&&y-j>=0)if(!chess[x+j][y-j]){y-=j;x+=j;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    226         if(x-i>=0&&y+i<MAXN)if(!chess[x-i][y+i]){y+=i;x-=i;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    227     }
    228     }
    229     //****************************************
    230     if(order2){
    231     flot=0;
    232     if(chess[x][y]==player)flot++;
    233     if(flot){
    234 for(i=1;i<5;++i)if(x+i<MAXN&&chess[x+i][y]==player)flot++;else if(!chess[x+i][y]&&t+1<2)t++,temp1=i;else break;if(!t)temp1=i;t=0;
    235 for(j=1;i<5;++j)if(x-j>=0&&chess[x-j][y]==player)flot++;else if(!chess[x-j][y]&&t+1<2)t++,temp2=j;else break;if(!t)temp2=j;t=0;
    236     if(flot>=3){i=temp1;j=temp2;
    237     if(x+i<MAXN)if(!chess[x+i][y]){x+=i;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    238         if(x-j>=0)if(!chess[x-j][y]){x-=j;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    239     }
    240     }flot=0;
    241     if(chess[x][y]==player)flot++;
    242     if(flot){
    243         for(i=1;i<5;++i)if(y+i<MAXN&&chess[x][y+i]==player)flot++;else if(!chess[x][y+i]&&t+1<2)t++,temp1=i;else break;if(!t)temp1=i;t=0;
    244 for(j=1;j<5;j++)if(y-j>=0&&chess[x][y-j]==player)flot++;else if(!chess[x][y-j]&&t+1<2)t++,temp2=j;else break;if(!t)temp2=j;t=0;
    245 if(flot>=3){i=temp1;j=temp2;
    246             if(y+i<MAXN)if(!chess[x][y+i]){y+=i;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    247         if(y-j>=0)if(!chess[x][y-j]){y-=j;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    248     }    
    249     }flot=0;
    250     if(chess[x][y]==player)flot++;
    251     if(flot){
    252     for(i=1;i<=5;++i)if(y+i<MAXN&&x+i<MAXN&&chess[x+i][y+i]==player)flot++;else if(!chess[x+i][y+i]&&t+1<2)t++,temp1=i;else break;if(!t)temp1=i;t=0;
    253 for(j=1;j<5;++j)if(y-j>=0&&x-j>=0&&chess[x-j][y-j]==player)flot++;else if(!chess[x-j][y-j]&&t+1<2)t++,temp2=j;else break;if(!t)temp2=j;t=0;
    254 if(flot>=3){i=temp1;j=temp2;
    255     if(x+i<MAXN&&y+i<MAXN)if(!chess[x+i][y+i]){y+=i;x+=i;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    256     if(x-j>=0&&y-j>=0)if(!chess[x-j][y-j]){y-=j;x-=j;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    257     }
    258     }flot=0;
    259     if(chess[x][y]==player)flot++;
    260     if(flot){
    261     for(i=1;i<5;++i)if(y+i<MAXN&&x-i>=0&&chess[x-i][y+i]==player)flot++;else if(!chess[x-i][y+i]&&t+1<2)t++,temp1=i;else break;if(!t)temp1=i;t=0;
    262 for(j=1;j<5;++j)if(y-j>=0&&x+j<MAXN&&chess[x+j][y-j]==player)flot++;else if(!chess[x+j][y-j]&&t+1<2)t++,temp2=j;else break;if(!t)temp2=j;t=0;
    263 if(flot>=3){i=temp1;j=temp2;
    264             if(x+j<MAXN&&y-j>=0)if(!chess[x+j][y-j]){y-=j;x+=j;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    265         if(x-i>=0&&y+i<MAXN)if(!chess[x-i][y+i]){y+=i;x-=i;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    266     }
    267     }
    268     //*****************
    269     flot=0;
    270     if(chess[x][y]==player)flot++;
    271     if(flot){
    272 for(i=1;i<5;++i)if(x+i<MAXN&&chess[x+i][y]==player)flot++;else if(!chess[x+i][y]&&t+1<2)t++,temp1=i;else break;if(!t)temp1=i;t=0;
    273 for(j=1;i<5;++j)if(x-j>=0&&chess[x-j][y]==player)flot++;else if(!chess[x-j][y]&&t+1<2)t++,temp2=j;else break;if(!t)temp2=j;t=0;
    274     if(flot>=2){i=temp1;j=temp2;
    275     if(x+i<MAXN)if(!chess[x+i][y]){x+=i;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    276         if(x-j>=0)if(!chess[x-j][y]){x-=j;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    277     }
    278     }flot=0;
    279     if(chess[x][y]==player)flot++;
    280     if(flot){
    281         for(i=1;i<5;++i)if(y+i<MAXN&&chess[x][y+i]==player)flot++;else if(!chess[x][y+i]&&t+1<2)t++,temp1=i;else break;if(!t)temp1=i;t=0;
    282 for(j=1;j<5;j++)if(y-j>=0&&chess[x][y-j]==player)flot++;else if(!chess[x][y-j]&&t+1<2)t++,temp2=j;else break;if(!t)temp2=j;t=0;
    283 if(flot>=2){i=temp1;j=temp2;
    284             if(y+i<MAXN)if(!chess[x][y+i]){y+=i;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    285         if(y-j>=0)if(!chess[x][y-j]){y-=j;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    286     }    
    287     }flot=0;
    288     if(chess[x][y]==player)flot++;
    289     if(flot){
    290     for(i=1;i<=5;++i)if(y+i<MAXN&&x+i<MAXN&&chess[x+i][y+i]==player)flot++;else if(!chess[x+i][y+i]&&t+1<2)t++,temp1=i;else break;if(!t)temp1=i;t=0;
    291 for(j=1;j<5;++j)if(y-j>=0&&x-j>=0&&chess[x-j][y-j]==player)flot++;else if(!chess[x-j][y-j]&&t+1<2)t++,temp2=j;else break;if(!t)temp2=j;t=0;
    292 if(flot>=2){i=temp1;j=temp2;
    293     if(x+i<MAXN&&y+i<MAXN)if(!chess[x+i][y+i]){y+=i;x+=i;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    294     if(x-j>=0&&y-j>=0)if(!chess[x-j][y-j]){y-=j;x-=j;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    295     }
    296     }flot=0;
    297     if(chess[x][y]==player)flot++;
    298     if(flot){
    299     for(i=1;i<5;++i)if(y+i<MAXN&&x-i>=0&&chess[x-i][y+i]==player)flot++;else if(!chess[x-i][y+i]&&t+1<2)t++,temp1=i;else break;if(!t)temp1=i;t=0;
    300 for(j=1;j<5;++j)if(y-j>=0&&x+j<MAXN&&chess[x+j][y-j]==player)flot++;else if(!chess[x+j][y-j]&&t+1<2)t++,temp2=j;else break;if(!t)temp2=j;t=0;
    301 if(flot>=2){i=temp1;j=temp2;
    302             if(x+j<MAXN&&y-j>=0)if(!chess[x+j][y-j]){y-=j;x+=j;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    303         if(x-i>=0&&y+i<MAXN)if(!chess[x-i][y+i]){y+=i;x-=i;chess[x][y]=player;Cx=x;Cy=y;return 1;}
    304     }
    305     }
    306     }
    307     return 0;    
    308 }
    309 void computer(){int x,y;order1=0;
    310     for( y=0;y<MAXN;y++){
    311         for( x=0;x<MAXN;x++){
    312             if(defense(x,y)){return;}
    313             }
    314         }//printf("保卫1失败  ");getch(); 
    315         order2=0;
    316         for( y=0;y<MAXN;y++){
    317         for( x=0;x<MAXN;x++){
    318             if(attarck(x,y)){return;}
    319             }
    320         }//printf("攻击失败  ");getch(); 
    321         for( y=0;y<MAXN;y++){order1=1;
    322         for( x=0;x<MAXN;x++){
    323             if(defense(x,y)){return;}
    324             }
    325         }//printf("保卫2失败  ");getch();
    326         for( y=0;y<MAXN;y++){order2=1;
    327         for( x=0;x<MAXN;x++){
    328             if(attarck(x,y)){return;}
    329             }
    330         }//printf("攻击2失败");getch(); 
    331         for( y=1;y<MAXN;y++){if(Cy+y>=MAXN)continue;
    332         for( x=1;x<MAXN;x++){if(Cx+x>=MAXN)continue;
    333             if(!chess[Cx+x][Cy+y]){Cx+=x;Cy+=y;
    334                 chess[Cx][Cy]=player;
    335                 return;
    336             }
    337         }
    338     }
    339     for( y=1;y<MAXN;y++){
    340         if(Cy-y<0)continue;
    341         for( x=1;x<MAXN;x++){
    342             if(Cx-x<0)continue;
    343             if(!chess[Cx-x][Cy-y]){Cx-=x;Cy-=y;
    344                 chess[Cx][Cy]=player;
    345                 return;
    346             }
    347         }
    348     }
    349     //printf("随机失败   "); getch(); 
    350 }
    351 int win(){
    352     int t=check();
    353     if(t==1){
    354 showtext="黑方获胜!";
    355 print();
    356 system("color 5b"); 
    357 system("echo 按任意键进行下一局比赛!");
    358 getch();return 1;
    359 }
    360 else if(t==2){
    361 showtext="白方获胜!";
    362 print();
    363 system("color 4f");
    364 system("echo 按任意键进行下一局比赛!");
    365 getch(); return 1;
    366 }
    367 else if(count==MAXN*MAXN){
    368 showtext="平局!";
    369 print();system("color 4e");
    370 system("echo 按任意键进行下一句比赛!");
    371 getch(); 
    372 return 1;
    373 }
    374 return 0;
    375 }
    376 void Run(){
    377 int input;
    378 initial();
    379         if(b%3==0)system("color e2");
    380 while(1){
    381 print();
    382 input=getch();
    383 if(input==27)exit(0);
    384 else if(input==32){
    385 if(judge()){count++;
    386 if(win())return;
    387 player=3-player;
    388 }
    389 }
    390 else if(input==224){
    391 input=getch();
    392 switch(input){
    393 case 0x4b:Cx--;break;
    394 case 0x48:Cy--;break;
    395 case 0x4d:Cx++;break;
    396 case 0x50:Cy++;break;
    397 }
    398 if(Cx<0)Cx=MAXN-1;
    399 if(Cy<0)Cy=MAXN-1;
    400 if(Cx>=MAXN)Cx=0;
    401 if(Cy>=MAXN)Cy=0;
    402 }
    403 if(select==59)if(player==2){computer();print();if(win())return;player=3-player;}
    404 }
    405 }
    406 int main(){
    407 system("title 五子棋 ——崔哥制作");
    408 system("mode con cols=63 lines=32");
    409 system("color 5f");
    410 while(1){system("cls");
    411     system("echo 请选择你要玩的模式:");
    412     printf("人机对战请按F1     人人对战请按F2
    ");
    413     select=getch();
    414     if(select==59||select==60){Run();b++;}
    415 }
    416 return 0;
    417 }
    五子棋
  • 相关阅读:
    Dapper一个和petapoco差不多的轻量级ORM框架
    .net怎么使用Swagger
    java调用第三方的webservice应用实例【转载】
    基于spring boot的定时器
    不用EF框架,完成完美实体映射,且便于维护!(AutoMapper,petapoco)
    html onclick时间传字符串参数
    浏览器json格式化插件 yformater
    HTML5视频播放插件
    开发中用到过的技术链接
    我是如何一步步编码完成万仓网ERP系统的(十四)库存 3.库存日志
  • 原文地址:https://www.cnblogs.com/handsomecui/p/4632806.html
Copyright © 2011-2022 走看看