You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
yankun666666/井字棋游戏最终版.cpp

395 lines
6.7 KiB

6 years ago
#include<stdio.h>
#include<stdlib.h>
6 years ago
#include <windows.h>
#define col 3
#define row 3
int color(int c)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),c);
return 0;
}
6 years ago
int store[][3]={'_','_','_','_','_','_','_','_','_'},i,j,k,flag=1;
6 years ago
void map()
6 years ago
{
char boundary='|';
system("cls");
6 years ago
for(i=0;i<col;i++)
6 years ago
{
6 years ago
for(j=0;j<row;j++)
6 years ago
{
printf("%c%c",boundary,store[i][j]);
if(j==2)
{
putchar(boundary);
putchar('\n');
}
}
}
}
6 years ago
int judge(int f=0)
6 years ago
{
if(store[0][0]+store[0][1]+store[0][2]==3*'X'||store[1][0]+store[1][1]+store[1][2]==3*'X'
||store[2][0]+store[2][1]+store[2][2]==3*'X'||store[0][0]+store[1][1]+store[2][2]==3*'X'
||store[2][0]+store[1][1]+store[0][2]==3*'X'||store[0][0]+store[1][0]+store[2][0]==3*'X'
||store[0][1]+store[1][1]+store[2][1]==3*'X'||store[0][2]+store[1][2]+store[2][2]==3*'X')
return 1;
else if(store[0][0]+store[0][1]+store[0][2]==3*'O'||store[1][0]+store[1][1]+store[1][2]==3*'O'
||store[2][0]+store[2][1]+store[2][2]==3*'O'||store[0][0]+store[1][1]+store[2][2]==3*'O'
||store[2][0]+store[1][1]+store[0][2]==3*'O'||store[0][0]+store[1][0]+store[2][0]==3*'O'
||store[0][1]+store[1][1]+store[2][1]==3*'O'||store[0][2]+store[1][2]+store[2][2]==3*'O')
return -1;
return f;
}
6 years ago
void final(int i)
6 years ago
{
6 years ago
system("cls");
map();
6 years ago
if(i==0)
printf("ƽ<EFBFBD><EFBFBD>");
else if(i==1)
6 years ago
printf("<EFBFBD><EFBFBD>Ӯ<EFBFBD><EFBFBD>");
6 years ago
else if(i==-1)
6 years ago
printf("<EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") ;
6 years ago
}
6 years ago
int mend(int x)
6 years ago
{
switch(x)
{
case 1:x=3;break;
case 3:x=1;break;
default:;
}
return x;
}
void Computer()
{
int sum,t=0,score[3][3];
6 years ago
for(i=0;i<col;i++)
for(j=0;j<row;j++)
6 years ago
score[i][j]=0;
6 years ago
for(i=0;i<col;i++)
6 years ago
{
6 years ago
for(j=0;j<row;j++)
6 years ago
t+=store[i][j];
if(t==2*'O'+'_')
sum=5;
else if(t=='O'+2*'_')
sum=3;
else if(t=='X'+2*'_')
6 years ago
sum=4;
6 years ago
else if(t==3*'_')
sum=1;
else if(t==2*'X'+'_')
sum=6;
else if(t=='X'+'O'+'_')
6 years ago
sum=2;
6 years ago
switch(sum)
{
case 1:
for(k=0;k<3;k++)
{
if(store[i][k]=='_')
score[i][k]=1;
}
break;
case 2:
for(k=0;k<3;k++)
{
if(store[i][k]=='_')
score[i][k]=10;
}
break;
case 3:
for(k=0;k<3;k++)
{
if(store[i][k]=='_')
score[i][k]=50;
}
break;
case 4:
for(k=0;k<3;k++)
{
if(store[i][k]=='_')
6 years ago
score[i][k]=200;
6 years ago
}
break;
case 5:
for(k=0;k<3;k++)
{
if(store[i][k]=='_')
score[i][k]=500;
}
break;
case 6:
for(k=0;k<3;k++)
{
if(store[i][k]=='_')
score[i][k]=1000;
}
break;
}
t=0;
}
6 years ago
for(j=0;j<row;j++)
6 years ago
{
6 years ago
for(i=0;i<col;i++)
6 years ago
t+=store[i][j];
if(t==2*'O'+'_')
sum=5;
else if(t=='O'+2*'_')
sum=3;
else if(t=='X'+2*'_')
6 years ago
sum=4;
6 years ago
else if(t==3*'_')
sum=1;
else if(t==2*'X'+'_')
sum=6;
else if(t=='X'+'O'+'_')
6 years ago
sum=2;
6 years ago
switch(sum)
{
case 1:
for(k=0;k<3;k++)
{
if(store[k][j]=='_')
score[k][j]+=1;
}
break;
case 2:
for(k=0;k<3;k++)
{
if(store[k][j]=='_')
score[k][j]+=10;
}
break;
case 3:
for(k=0;k<3;k++)
{
if(store[k][j]=='_')
score[k][j]+=50;
}
break;
case 4:
for(k=0;k<3;k++)
{
if(store[k][j]=='_')
score[k][j]+=200;
}
break;
case 5:
for(k=0;k<3;k++)
{
if(store[k][j]=='_')
score[k][j]+=500;
}
break;
case 6:
for(k=0;k<3;k++)
{
if(store[k][j]=='_')
score[k][j]+=1000;
}
break;
}
t=0;
}
t=0;
6 years ago
for(i=0;i<col;i++)
6 years ago
t+=store[i][i];
if(t==2*'O'+'_')
sum=5;
else if(t=='O'+2*'_')
sum=3;
else if(t=='X'+2*'_')
6 years ago
sum=4;
6 years ago
else if(t==3*'_')
sum=1;
else if(t==2*'X'+'_')
sum=6;
else if(t=='X'+'O'+'_')
6 years ago
sum=2;
6 years ago
switch(sum)
{
case 1:
for(k=0;k<3;k++)
{
if(store[k][k]=='_')
score[k][k]+=1;
}
break;
case 2:
for(k=0;k<3;k++)
{
if(store[k][k]=='_')
score[k][k]+=10;
}
break;
case 3:
for(k=0;k<3;k++)
{
if(store[k][k]=='_')
score[k][k]+=50;
}
break;
case 4:
for(k=0;k<3;k++)
{
if(store[k][k]=='_')
score[k][k]+=200;
}
break;
case 5:
for(k=0;k<3;k++)
{
if(store[k][k]=='_')
score[k][k]+=500;
}
break;
case 6:
for(k=0;k<3;k++)
{
if(store[k][k]=='_')
score[k][k]+=1000;
}
break;
}
t=0;
6 years ago
for(i=0;i<col;i++)
6 years ago
t+=store[i][2-i];
if(t==2*'O'+'_')
sum=5;
else if(t=='O'+2*'_')
sum=3;
else if(t=='X'+2*'_')
6 years ago
sum=4;
6 years ago
else if(t==3*'_')
sum=1;
else if(t==2*'X'+'_')
sum=6;
else if(t=='X'+'O'+'_')
6 years ago
sum=2;
6 years ago
switch(sum)
{
case 1:
for(k=0;k<3;k++)
{
if(store[k][2-k]=='_')
score[k][2-k]+=1;
}
break;
case 2:
for(k=0;k<3;k++)
{
if(store[k][2-k]=='_')
score[k][2-k]+=10;
}
break;
case 3:
for(k=0;k<3;k++)
{
if(store[k][2-k]=='_')
score[k][2-k]+=50;
}
break;
case 4:
for(k=0;k<3;k++)
{
if(store[k][2-k]=='_')
score[k][2-k]+=200;
}
break;
case 5:
for(k=0;k<3;k++)
{
if(store[k][2-k]=='_')
score[k][2-k]+=500;
}
break;
case 6:
for(k=0;k<3;k++)
{
if(store[k][2-k]=='_')
score[k][2-k]+=1000;
}
break;
}
int maxRow = 0, maxCol = 0;
6 years ago
for (i=0; i<col; i++)
for (j=0;j<row;j++)
6 years ago
{
if (score[i][j] > score[maxRow][maxCol])
{
maxRow = i;
maxCol = j;
}
}
store[maxRow][maxCol]='O';
6 years ago
map();
maxRow=mend(maxRow+1);
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>кź<EFBFBD><EFBFBD>к<EFBFBD><EFBFBD>ǣ<EFBFBD>%d %d\n",maxRow,maxCol+1);
6 years ago
}
6 years ago
void scan()
6 years ago
{
int x,y;
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ߵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>кź<EFBFBD><EFBFBD>кţ<EFBFBD>");
scanf("%d%d",&x,&y);
printf("%d,%d",x,y) ;
6 years ago
x=mend(x);
6 years ago
while(x>3||x<=0||y>3||y<=0||store[x-1][y-1]!='_')
{
6 years ago
if(x>3||x<=0||y>3||y<=0)
printf("<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>ΧΪ1<EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
else if (store[x-1][y-1]!='_')
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD>ռ<EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
6 years ago
getchar();
scanf("%d%d",&x,&y);
6 years ago
x=mend(x);
6 years ago
}
6 years ago
6 years ago
store[x-1][y-1]='X';
6 years ago
map();
6 years ago
}
int main()
{
int count=0,i;
6 years ago
char ch;
color(10);
6 years ago
printf("\t<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ!\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ֮ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
printf("1.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD>˳<EFBFBD><CBB3>\n");
6 years ago
printf("2.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>򣬵ڶ<F2A3ACB5><DAB6><EFBFBD><EFBFBD><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>ʽΪ<CABD><CEAA>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>y<EFBFBD><79>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>x\n");
printf("3.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n") ;
printf("<EFBFBD><EFBFBD><EFBFBD>س<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ-_- =_= +_+\n");
6 years ago
getchar();
system("cls");
6 years ago
color(12);
6 years ago
printf("<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>y/n<><6E>");
scanf("%c",&ch);
6 years ago
map();
6 years ago
if(ch=='N'||ch=='n')
goto lp;
for(count=0;count<10;count++)
{
6 years ago
i=judge();
if(judge())
6 years ago
break;
if(count==9)
6 years ago
{
color(0);
6 years ago
i=0;
break;
}
6 years ago
color(14);
printf("<EFBFBD><EFBFBD>Ϸ״̬<EFBFBD><EFBFBD>UNLEND\n");
color(3);
scan();
6 years ago
lp: Computer();
count+=1;
}
6 years ago
color(4);
final(i);
6 years ago
return 0;
}