我想问下关于马踏棋盘的算法方面的问题,最好能看看这个的源代码,现在急着用,希望知道的朋友可以把你知道的关于马踏棋盘的问题的资料共享下,我急着完成这个程序,但是一点思路都没有,谢谢最好有源代码,

解决方案 »

  1.   

    void CCheMove::CheckMA(int x,int y)//马...................................................................马............
    {
    if((x-2)>=0)//没有超出棋盘....
    {
    if(arrayCheckedBoard[x-1][y]==0)//向左的方向没有别脚.....
    {
    if(((y+1)<10) && (arrayCheckedBoard[x][y]*arrayCheckedBoard[x-2][y+1]<=0)) Add(x,y,x-2,y+1);//左下
    if(((y-1)>=0) && (arrayCheckedBoard[x][y]*arrayCheckedBoard[x-2][y-1]<=0)) Add(x,y,x-2,y-1);//左上
    }
    } if((x+2)<9)//没有超出棋盘....
    {
    if(arrayCheckedBoard[x+1][y]==0)//向右的方向没有别脚....
    {
    if(((y+1)<10) && (arrayCheckedBoard[x][y]*arrayCheckedBoard[x+2][y+1]<=0)) Add(x,y,x+2,y+1);//右下
    if(((y-1)>=0) && (arrayCheckedBoard[x][y]*arrayCheckedBoard[x+2][y-1]<=0)) Add(x,y,x+2,y-1);//右上
    }
    }
    if((y-2)>=0)//没有超出棋盘...
    {
    if(arrayCheckedBoard[x][y-1]==0)//向上的方向没有别脚.....
    {
    if(((x+1)<9) && (arrayCheckedBoard[x][y]*arrayCheckedBoard[x+1][y-2]<=0)) Add(x,y,x+1,y-2);//上右
    if(((x-1)>=0) && (arrayCheckedBoard[x][y]*arrayCheckedBoard[x-1][y-2]<=0)) Add(x,y,x-1,y-2);//上左
    }
    }
    if((y+2)<10)//没有超出棋盘....
    {
    if(arrayCheckedBoard[x][y+1]==0)//向下的方向没有别脚.....
    {
    if(((x+1)<9) && (arrayCheckedBoard[x][y]*arrayCheckedBoard[x+1][y+2]<=0)) Add(x,y,x+1,y+2);//下右
    if(((x-1)>=0) && (arrayCheckedBoard[x][y]*arrayCheckedBoard[x-1][y+2]<=0)) Add(x,y,x-1,y+2);//下左
    }
    }
    }