#include"stdio.h"
#include"stdlib.h"
#include"tiaoqi.h"
int InitChessBoard(char a[MAXSIZE][MAXSIZE],int &x,int &y)
{ int i,j;
x=0;
y=0;
for(i=0;i<MAXSIZE;i++)
{
for(j=0;j<MAXSIZE;j++)
{
a[i][j]='o';
}
}
a[MAXSIZE/2][MAXSIZE/2]='.';
return OK;
}
int print(char a[MAXSIZE][MAXSIZE])//输出棋盘
{
int i,j;
for(i=0;i<=MAXSIZE;i++)
{
if(i<10)
printf("%d ",i);
else
printf("%d",i);
}
printf("\n");
for(i=1;i<=MAXSIZE;i++)
{
if(i<10)
printf("%d ",i);
else
printf("%d",i);
for(j=0;j<MAXSIZE;j++)
{
printf("%c ",a[i-1][j]);
}
printf("\n");
}
return OK;
}
int GameOver(char a[MAXSIZE][MAXSIZE])//判断是否已经结束
{
int i,j;
for(i=0;i<MAXSIZE;i++)
{
for(j=0;j<MAXSIZE;j++)
{
if(a[i][j]=='o')
{ //可以向下走
if(i+2<MAXSIZE && a[i+1][j]=='o' && a[i+2][j]=='.')
return NO;
//可以向上走
if(i-2>=0 && a[i-1][j]=='o' && a[i-2][j]=='.')
return NO;
//可以向左走
if(j-2>=0 && a[i][j-1]=='o' && a[i][j-2]=='.')
return NO;
//可以向右走
if(j+2<MAXSIZE && a[i][j+1]=='o' && a[i][j+2]=='.')
return NO;
}
}
}
return YES;
}
int Play(char a[MAXSIZE][MAXSIZE],int &player)//输入要走的棋子和走的方向
{ int i,j,sign;
char dir;
printf("请输入要移动的棋子坐标及方向\n");
scanf("%d %d %c",&i,&j,&dir);
if((a[i-1][j-1]=='.')||(i<0||i>MAXSIZE)||(j<0||j>MAXSIZE))
{
printf("输入错误\n");
Play(a,player);
return OK;
}
else
{
sign=checkgo(a,i,j,dir);
while(sign==OK)
{
player++;
getchar();
dir=getchar();
sign=checkgo(a,i,j,dir);
}
print(a);
}
return OK;
}
int checkgo(char a[MAXSIZE][MAXSIZE],int &i,int &j,char dir)
{
switch(dir)
{ //向左走
case'a':
if(j-2<=0||a[i-1][j-3]=='o')
return ERROR;
else
{
a[i-1][j-1]='.';
a[i-1][j-2]='.';
a[i-1][j-3]='o';
j-=2;
return OK;
}
//向下走
case's':
if(i+2>MAXSIZE||a[i+1][j-1]=='o')
return ERROR;
else
{
a[i-1][j-1]='.';
a[i][j-1]='.';
a[i+1][j-1]='o';
i+=2;
return OK;
}
//向右走
case'd':
if(j+2>MAXSIZE||a[i-1][j+1]=='o')
return ERROR;
else
{
a[i-1][j-1]='.';
a[i-1][j]='.';
a[i-1][j+1]='o';
j+=2;
return OK;
}
//向上走
case'w':
if(i-2<=0||a[i-3][j-1]=='o')
return ERROR;
else
{
a[i-1][j-1]='.';
a[i-2][j-1]='.';
a[i-3][j-1]='o';
i-=2;
return OK;
}
default:
return EXCEPT;
}
}
评论0