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