哪位高手还能发一个MFC五子棋的程序包给我

[复制链接]
查看11 | 回复1 | 2009-12-2 17:47:01 | 显示全部楼层 |阅读模式
7ir
回复

使用道具 举报

千问 | 2009-12-2 17:47:01 | 显示全部楼层
// 作用:判断指定行棋方向上,是否有含当前棋位的5个连续当前玩家棋子// Cursor -- 当前棋位坐标// direction -- 方向// Order -- 表示当前玩家的棋子标记。int JudgeWinLine(int Order,struct point Cursor,int direction) { int i; struct point pos,dpos; const int testnum = 5;// 设置判断的连续棋子个数,既5个。int count; // 求从当前棋子在行棋方向上起点棋位,既逆向数(不含当前棋子)的第4个棋子)的坐标,// 以及该行棋方向沿水平方向,垂直方向的步长。// pos.x -- 起点棋位(逆向数(不含当前棋子)的第4个棋位)的坐标x// pos.y -- 起点棋位(逆向数(不含当前棋子)的第4个棋位)的坐标y// dpos.x -- 行棋方向沿水平方向的步长,既行棋方向增加一格,则水平方向对应的坐标变化值。// dpos.y -- 行棋方向沿垂直方向的步长,既行棋方向增加一格,垂直方向的对应的坐标变化值。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; // 临时记录已有连续棋子的个数。// 这里程序中代码是错的,应该取 i=0&&pos.x=0&&pos.y=testnum) // 如果连续棋子数大于等于“要判断的棋子个数”,则判断为真。return TRUE; } else count=0; // 如果棋位上没有该玩家棋子,既出现空位或对家棋子,则连续棋子数清零。} // 每次循环,按步长计算一次行棋方向上的新棋位坐标。pos.x+=dpos.x; pos.y+=dpos.y; } return FALSE; } // 替换switchif(direction==0)/*在水平方向*/ { pos.x=Cursor.x-(testnum-1); pos.y=Cursor.y; dpos.x=1; dpos.y=0; }else if(direction==1)/*在垂直方向*/ {pos.x=Cursor.x; pos.y=Cursor.y-(testnum-1); dpos.x=0; dpos.y=1;}else if(direction==2)/*在左下至右上的斜方向*/ {pos.x=Cursor.x-(testnum-1); pos.y=Cursor.y+(testnum-1); dpos.x=1; dpos.y=-1; }else if(direction==3)/*在左上至右下的斜方向*/ {pos.x=Cursor.x-(testnum-1); pos.y=Cursor.y-(testnum-1); dpos.x=1; dpos.y=1;}else{
/* 非法direction方向参数值 */}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行