象棋人工智能算法的C++实现(二)

本文介绍了C++实现中国象棋中士、兵、相、马的走棋算法,包括走棋规则解析和源代码展示,为后续人工智能算法的实现打下基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

欢迎大家关注/订阅我的微信公众号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的棋
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值