判断在指定方向上是否有连续5个行棋方的棋子?

freedwind 2004-08-01 07:17:22
/*判断在指定方向上是否有连续5个行棋方的棋子*/
int JudgeWinLine(int Order,struct point Cursor,int direction)
{
int i;
struct point pos,dpos;
const int testnum = 5;
int count;

switch(direction)
{
case 0:/*在水平方向*/
pos.x=Cursor.x-(testnum-1);
pos.y=Cursor.y;
dpos.x=1;
dpos.y=0;
break;
case 1:/*在垂直方向*/
pos.x=Cursor.x;
pos.y=Cursor.y-(testnum-1);
dpos.x=0;
dpos.y=1;
break;
case 2:/*在左下至右上的斜方向*/
pos.x=Cursor.x-(testnum-1);
pos.y=Cursor.y+(testnum-1);
dpos.x=1;
dpos.y=-1;
break;
case 3:/*在左上至右下的斜方向*/
pos.x=Cursor.x-(testnum-1);
pos.y=Cursor.y-(testnum-1);
dpos.x=1;
dpos.y=1;
break;
}

count=0;
for(i=0;i<testnum*2+1;i++)
{
if(pos.x>=0&&pos.x<=18&&pos.y>=0&&pos.y<=18)
{
if(gChessBoard[pos.x][pos.y]==Order)
{
count++;
if(count>=testnum)
return TRUE;
}
else
count=0;
}
pos.x+=dpos.x;
pos.y+=dpos.y;
}

return FALSE;
}

--------------------------
麻烦哪位能给我详细讲一下
for(i=0;i<testnum*2+1;i++)
{
if(pos.x>=0&&pos.x<=18&&pos.y>=0&&pos.y<=18)
{
if(gChessBoard[pos.x][pos.y]==Order)
{
count++;
if(count>=testnum)
return TRUE;
}
else

count=0;
}
pos.x+=dpos.x;
pos.y+=dpos.y;
这段具体是怎样运行的呢?
...全文
172 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pheng1981 2004-08-01
  • 打赏
  • 举报
回复
当前点应该是当前所下棋子的位置
pheng1981 2004-08-01
  • 打赏
  • 举报
回复
注:以下所说当前点是根据情况具体而定

for(i=0;i<testnum*2+1;i++)/*判断十次是为了检查当前棋子的左右(或上下)5个棋子*/
if(pos.x>=0&&pos.x<=18&&pos.y>=0&&pos.y<=18)/*将搜索范围定义在周围的5个点*/
if(gChessBoard[pos.x][pos.y]==Order)/*要判定的点与当前点位于同一线*/
count++;/*count表示有多少个点与当前点是位于同一线*/
if(count>=testnum)
return TRUE;/*如果有5个点与当前点位于同一线就是说5点一线,可以结束*/
else

count=0;
/*往后移动,继续判断*/
pos.x+=dpos.x;
pos.y+=dpos.y;

/*以上解释仅属个人断章取意的看法,如有不对之处勿怪*/
联系QQ:106440465

freedwind 2004-08-01
  • 打赏
  • 举报
回复
补充一点,这是个五子棋的程序
为什么
i<testnum*2+1 不解?
freedwind 2004-08-01
  • 打赏
  • 举报
回复
我顶!
fox821121 2004-08-01
  • 打赏
  • 举报
回复
我看了
but
不懂
freedwind 2004-08-01
  • 打赏
  • 举报
回复
没分真的没人看的吗??

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧