parent
2638e5208a
commit
cb55ac579f
@ -0,0 +1,362 @@
|
|||||||
|
#include<stdio.h>
|
||||||
|
#include<stdlib.h>
|
||||||
|
int store[][3]={'_','_','_','_','_','_','_','_','_'},i,j,k,flag=1;
|
||||||
|
void print_map()
|
||||||
|
{
|
||||||
|
char boundary='|';
|
||||||
|
getchar();
|
||||||
|
system("cls");
|
||||||
|
for(i=0;i<3;i++)
|
||||||
|
|
||||||
|
{
|
||||||
|
for(j=0;j<3;j++)
|
||||||
|
{
|
||||||
|
printf("%c%c",boundary,store[i][j]);
|
||||||
|
if(j==2)
|
||||||
|
{
|
||||||
|
putchar(boundary);
|
||||||
|
putchar('\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int judge_win(int f=0)
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
void judge_final(int i)
|
||||||
|
{
|
||||||
|
if(i==0)
|
||||||
|
printf("平局");
|
||||||
|
else if(i==1)
|
||||||
|
printf("VICTORY");
|
||||||
|
else if(i==-1)
|
||||||
|
printf("FILE") ;
|
||||||
|
}
|
||||||
|
int number_mend(int x)
|
||||||
|
{
|
||||||
|
switch(x)
|
||||||
|
{
|
||||||
|
case 1:x=3;break;
|
||||||
|
case 3:x=1;break;
|
||||||
|
default:;
|
||||||
|
}
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
void Computer()
|
||||||
|
{
|
||||||
|
|
||||||
|
int sum,t=0,score[3][3];
|
||||||
|
for(i=0;i<3;i++)
|
||||||
|
for(j=0;j<3;j++)
|
||||||
|
score[i][j]=0;
|
||||||
|
for(i=0;i<3;i++)
|
||||||
|
{
|
||||||
|
for(j=0;j<3;j++)
|
||||||
|
t+=store[i][j];
|
||||||
|
if(t==2*'O'+'_')
|
||||||
|
sum=5;
|
||||||
|
else if(t=='O'+2*'_')
|
||||||
|
sum=3;
|
||||||
|
else if(t=='X'+2*'_')
|
||||||
|
sum=2;
|
||||||
|
else if(t==3*'_')
|
||||||
|
sum=1;
|
||||||
|
else if(t==2*'X'+'_')
|
||||||
|
sum=6;
|
||||||
|
else if(t=='X'+'O'+'_')
|
||||||
|
sum=4;
|
||||||
|
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]=='_')
|
||||||
|
score[i][k]+=200;
|
||||||
|
}
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
for(j=0;j<3;j++)
|
||||||
|
{
|
||||||
|
for(i=0;i<3;i++)
|
||||||
|
t+=store[i][j];
|
||||||
|
if(t==2*'O'+'_')
|
||||||
|
sum=5;
|
||||||
|
else if(t=='O'+2*'_')
|
||||||
|
sum=3;
|
||||||
|
else if(t=='X'+2*'_')
|
||||||
|
sum=2;
|
||||||
|
else if(t==3*'_')
|
||||||
|
sum=1;
|
||||||
|
else if(t==2*'X'+'_')
|
||||||
|
sum=6;
|
||||||
|
else if(t=='X'+'O'+'_')
|
||||||
|
sum=4;
|
||||||
|
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;
|
||||||
|
for(i=0;i<3;i++)
|
||||||
|
t+=store[i][i];
|
||||||
|
if(t==2*'O'+'_')
|
||||||
|
sum=5;
|
||||||
|
else if(t=='O'+2*'_')
|
||||||
|
sum=3;
|
||||||
|
else if(t=='X'+2*'_')
|
||||||
|
sum=2;
|
||||||
|
else if(t==3*'_')
|
||||||
|
sum=1;
|
||||||
|
else if(t==2*'X'+'_')
|
||||||
|
sum=6;
|
||||||
|
else if(t=='X'+'O'+'_')
|
||||||
|
sum=4;
|
||||||
|
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;
|
||||||
|
for(i=0;i<3;i++)
|
||||||
|
t+=store[i][2-i];
|
||||||
|
if(t==2*'O'+'_')
|
||||||
|
sum=5;
|
||||||
|
else if(t=='O'+2*'_')
|
||||||
|
sum=3;
|
||||||
|
else if(t=='X'+2*'_')
|
||||||
|
sum=2;
|
||||||
|
else if(t==3*'_')
|
||||||
|
sum=1;
|
||||||
|
else if(t==2*'X'+'_')
|
||||||
|
sum=6;
|
||||||
|
else if(t=='X'+'O'+'_')
|
||||||
|
sum=4;
|
||||||
|
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;
|
||||||
|
for (i=0; i<3; i++)
|
||||||
|
for (j=0;j<3;j++)
|
||||||
|
{
|
||||||
|
if (score[i][j] > score[maxRow][maxCol])
|
||||||
|
{
|
||||||
|
maxRow = i;
|
||||||
|
maxCol = j;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
store[maxRow][maxCol]='O';
|
||||||
|
print_map();
|
||||||
|
}
|
||||||
|
void scan_number()
|
||||||
|
{
|
||||||
|
int x,y;
|
||||||
|
printf("请输入要走的棋格行号和列号:");
|
||||||
|
scanf("%d%d",&x,&y);
|
||||||
|
printf("%d,%d",x,y) ;
|
||||||
|
x=number_mend(x);
|
||||||
|
while(x>3||x<=0||y>3||y<=0||store[x-1][y-1]!='_')
|
||||||
|
{
|
||||||
|
printf("非法输入,请重新输入\n");
|
||||||
|
getchar();
|
||||||
|
scanf("%d%d",&x,&y);
|
||||||
|
x=number_mend(x);
|
||||||
|
}
|
||||||
|
store[x-1][y-1]='X';
|
||||||
|
print_map();
|
||||||
|
}
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int count,i;
|
||||||
|
printf("这是一个井字棋游戏!按回车选择下棋顺序\n");
|
||||||
|
getchar();
|
||||||
|
system("cls");
|
||||||
|
print_map();
|
||||||
|
for(count=0;count<10;count+=2)
|
||||||
|
{
|
||||||
|
i=judge_win();
|
||||||
|
if(judge_win())
|
||||||
|
break;
|
||||||
|
if(count==9)
|
||||||
|
{
|
||||||
|
i=0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
scan_number();
|
||||||
|
Computer();
|
||||||
|
}
|
||||||
|
judge_final(i);
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in new issue