五子棋

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

代码:

  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!='\0')*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\n");
413     select=getch();
414     if(select==59||select==60){Run();b++;}
415 }
416 return 0;
417 }
五子棋

 

posted @ 2015-07-09 12:29  handsomecui  阅读(268)  评论(0编辑  收藏  举报