欢迎大家关注/订阅我的微信公众号Code Art Online,我会在我的公众号分享个人见闻,发现生活趣味;这里不仅有0和1,还有是诗和远方↓↓↓
前言:在看完上一期博客后,是不是对这个项目感到有点小兴奋呢?但是我首先要声明的是,这并不是最前沿的人工智能,所用的算法或许不是最快速的,只是闲的没事做着玩的一个小项目。欢迎各位攻城狮、各位行业大牛的讨论、批评与指正。
有了上一期的铺垫,本期就可以实现诸如马走日、象走田等各种棋子的走棋算法了。为了方便后期人工智能算法的实现,我们写一个总的canMove函数,在这个总的canMove函数里调用各种类型棋子的canMove函数来判断各种棋子选择的路径能不能走得通。
总的canMove函数的源代码:
bool Board::canMove(int moveid, int killid, int row, int col)
{
if(killid==-1||!sameColor(moveid,killid))
{
switch(_s[moveid]._type)
{
case Stone::JIANG:
return canMoveJIANG(moveid,row,col,killid);
break;
case Stone::SHI:
return canMoveSHI(moveid,row,col,killid);
break;
case Stone::XIANG:
return canMoveXIANG(moveid,row,col,killid);
break;
case Stone::CHE:
return canMoveCHE(moveid,row,col,killid);
break;
case Stone::MA:
return canMoveMA(moveid,row,col,killid);
break;
case Stone::PAO:
return canMovePAO(moveid,row,col,killid);
break;
case Stone::BING:
return canMoveBING(moveid,row,col,killid);
break;
default: break;
}
}
//move的棋