棋牌游戏开发:斗地主AI之被动出牌(7.2)附源码下载

废话不多说,直接开始上干货

若不出牌,我们只更新自己手牌类型就好了。若出牌时,不但要更新自己手牌信息,也要更新棋牌游戏全局类里面的当前出牌信息。不过我更推荐后期嵌入的时候通过服务器来获取当前出牌的信息。比如我的测试函数里会加上:

    if (arrHandCardData[indexID].uctPutCardType.cgType != cgZERO)

    {

    clsGameSituation.nCardDroit = indexID;

    clsGameSituation.uctNowCardGroup = arrHandCardData[indexID].uctPutCardType;

    }

查看斗地主代码全部文章点击这里:棋牌游戏开发:斗地主AI系列

另外,出牌前记得清空一下出牌序列,就是在一开始加:

clsHandCardData.ClearPutCardList();

所以,整个函数的架子是这样的,假设我们啥都管不上。

/*

2.0版本策略  根据场上形势决定当前预打出的手牌——被动出牌

*/

void get_PutCardList_2_limit(GameSituation &clsGameSituation, HandCardData &clsHandCardData)

{

    clsHandCardData.ClearPutCardList();

    /*王炸——当前策略只处理王炸作为倒数第二手的优先出牌逻辑,后续版本会在此基础上优化*/

    if (clsHandCardData.value_aHandCardList[17] > 0 && clsHandCardData.value_aHandCardList[16] > 0)

    { 

    clsHandCardData.value_aHandCardList[17] --;

    clsHandCardData.value_aHandCardList[16] --;

    clsHandCardData.nHandCardCount -= 2;

    HandCardValue tmpHandCardValue = get_HandCardValue(clsHandCardData);

    clsHandCardData.value_aHandCardList[16] ++;

    clsHandCardData.value_aHandCardList[17] ++;

    clsHandCardData.nHandCardCount += 2;

    if (tmpHandCardValue.NeedRound == 1)

    {

    clsHandCardData.value_nPutCardList.push_back(17);

    clsHandCardData.value_nPutCardList.push_back(16);

    clsHandCardData.uctPutCardType = clsGameSituation.uctNowCardGroup = get_GroupData(cgKING_CARD, 17, 2);

    return;

    }

    }

    //错误牌型  不出

    if (clsGameSituation.uctNowCardGroup.cgType == cgERROR)

    {

    clsHandCardData.uctPutCardType = get_GroupData(cgERROR, 0, 0);

    return;

    }

    //不出牌型,在被动出牌策略里也是错误数据 不出

    else if (clsGameSituation.uctNowCardGroup.cgType == cgZERO)

    {

    clsHandCardData.uctPutCardType = get_GroupData(cgZERO, 0, 0);

    return;

    }

    //单牌类型

    else if (clsGameSituation.uctNowCardGroup.cgType == cgSINGLE)

    {

        //管不上

        clsHandCardData.uctPutCardType = get_GroupData(cgZERO, 0, 0);

    return;

    }

    //对牌类型

    else if (clsGameSituation.uctNowCardGroup.cgType == cgDOUBLE)

    {

    //管不上

    clsHandCardData.uctPutCardType = get_GroupData(cgZERO, 0, 0);

    return;

    }

    //三牌类型

    else if (clsGameSituation.uctNowCardGroup.cgType == cgTHREE)

    {

    //管不上

    clsHandCardData.uctPutCardType = get_GroupData(cgZERO, 0, 0);

    return;

    }

    //单连类型

    else if (clsGameSituation.uctNowCardGroup.cgType == cgSINGLE_LINE)

    {

    //管不上

    clsHandCardData.uctPutCardType = get_GroupData(cgZERO, 0, 0);

    return;

    }

    //对连类型

    else if (clsGameSituation.uctNowCardGroup.cgType == cgDOUBLE_LINE)

    {

    //管不上

    clsHandCardData.uctPutCardType = get_GroupData(cgZERO, 0, 0);

    return; 

    }

image.

image.

当然,啥都管不上肯定是不行的,所以接下来我们会填充各种牌型的策略算法。

敬请关注下一章:棋牌游戏开发斗地主AI被动出牌(8.1)

斗地主AI之被动出牌源码下载.txt鼠标右键-文件另存为

--------------------- 

作者:九日王朝 


025源码论坛声明 1、本网站中的绝大部分资源来源于网络, 本网站不保证所有资源的正确性和安全性,不为其合法性负责.
2、对于一切使用本网站资源而可能遭致的意外、疏忽、侵权及其造成的损失,本网站对其概不负责,亦不承担任何法律责任。
3、其他单位或个人使用、转载或引用本站原创文章时必须同时征得本025源码网的同意.
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时删除并致以最深的歉意。
5、如需要本站的游戏源码或搭建帮助,可以联系站长 15623571666(微信同号)或者扫描右侧二维码!

您可能还会对下面的文章感兴趣:

    cache
    Processed in 0.003308 Second.