最近准备开发一个彩球小游戏,找了一段代码参考了一下.其中fx,fy和cnt数组分别都是什么作用?
int FiveInLine(int x,int y) //x-r y-c
{
int fx[]={0,1,1,1,0,-1,-1,-1};
int fy[]={-1,-1,0,1,1,1,0,-1};
int cnt[8];
int i,j;
memset(cnt,0,sizeof(cnt));
for(i=0;i {
while(CheckIn(x+fx[i]*(cnt[i]+1),y+fy[i]*(cnt[i]+1)) && matrix[x+fx[i]*(cnt[i]+1)][y+fy[i]*(cnt[i]+1)]==matrix[x][y])
cnt[i]++;
}
for(i=0;i {
if(cnt[i]+cnt[i+4]+1>=5)
{
line[0].r=x;
line[0].c=y;
for(j=1;j<cnt[i]+1;j++)
{
line[j].r=x+fx[i]*j;
line[j].c=y+fy[i]*j;
}
for(j=cnt[i]+1;j<5;j++)
{
line[j].r=x+fx[i+4]*(j-cnt[i]);
line[j].c=y+fy[i+4]*(j-cnt[i]);
}
BallNum-=5;
return 1;
}
}
return 0;
}
fx,fy中对应下标的元素构成一个二元组(fx,fy),表示即将进行判断的方向,如(1,1)表示右上,(-1,0)表示左。
cnt数组存储每个方向上连珠的数目。
fx fy是存储棋盘的,-1 0 1分别是黑子白子无子三个状态
cnt用来记录连线的长度