2015华为软件精英挑战赛之手牌策略

来源:互联网 发布:java到底是什么 编辑:程序博客网 时间:2024/05/01 07:43

ps:这不是决赛的版本,部分参数和决赛不一样,但基本差不多(决赛的版本不见了)

//>4人

void HoldAISeatNumberMore5(int mHoldWeight)
{
    int mrasiepeople = getRaisePeopleNumber();
    if (myPosition == 1)
    {
        if (HoldWheel == 1)
        {
            HoldWheelOneButtonSeatNumberMore5(mHoldWeight, mrasiepeople);
        }
        else if (HoldWheel == 2)
        {
            HoldWheelTwoSeatNumberMore5(mHoldWeight, mrasiepeople);
        }
        else
        {
            HoldWheelThreeSeatNumberMore5(mHoldWeight);
        }

    }
    else if (myPosition == 2)
    {
        if (HoldWheel == 1)
        {
            HoldWheelOneSBSeatNumberMore5(mHoldWeight, mrasiepeople);
        }
        else if (HoldWheel == 2)
        {
            HoldWheelTwoSeatNumberMore5(mHoldWeight, mrasiepeople);
        }
        else
        {
            HoldWheelThreeSeatNumberMore5(mHoldWeight);
        }
    }
    else if (myPosition == 3)
    {
        if (HoldWheel == 1)
        {
            HoldWheelOneBBSeatNumberMore5(mHoldWeight, mrasiepeople);
        }
        else if (HoldWheel == 2)
        {
            HoldWheelTwoSeatNumberMore5(mHoldWeight, mrasiepeople);
        }
        else
        {
            HoldWheelThreeSeatNumberMore5(mHoldWeight);
        }
    }
    else if (myPosition == 4)
    {
        if (HoldWheel == 1)
        {
            HoldWheelOneBBNextSeatNumberMore5(mHoldWeight);
        }
        else if (HoldWheel == 2)
        {
            HoldWheelTwoSeatNumberMore5(mHoldWeight, mrasiepeople);
        }
        else
        {
            HoldWheelThreeSeatNumberMore5(mHoldWeight);
        }
    }
    else if (myPosition == seatNumber)
    {
        if (HoldWheel == 1)
        {
            HoldWheelOneBeforeButtonSeatNumberMore5(mHoldWeight, mrasiepeople);
        }
        else if (HoldWheel == 2)
        {
            HoldWheelTwoSeatNumberMore5(mHoldWeight, mrasiepeople);
        }
        else
        {
            HoldWheelThreeSeatNumberMore5(mHoldWeight);
        }
    }
    else
    {
        if (HoldWheel == 1)
        {
            HoldWheelOneOtherSeatNumberMore5(mHoldWeight, mrasiepeople);
        }
        else if (HoldWheel == 2)
        {
            HoldWheelTwoSeatNumberMore5(mHoldWeight, mrasiepeople);
        }
        else
        {
            HoldWheelThreeSeatNumberMore5(mHoldWeight);
        }
    }
}

void HoldWheelOneButtonSeatNumberMore5(int mHoldWeight, int mRaisePeople)
{
    long mtopMoney = getMyTopMoney(mHoldWeight);
    long mHoldRank = getMyHoldCardRank(mHoldWeight);
    long mMyBet = getMyBet();
    long RaiseMoneyOne = -1;
    if (mRaisePeople == 0)  //0人加注
    {
        if (mHoldRank >= 8) //大牌跟住
            snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
        else if (mHoldRank >= 7)
        {
            RaiseMoneyOne = RaiseMoneyMore2BB();
            snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
        }
        else if (mHoldRank >= 4)
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }
    }
    else if (mRaisePeople == 1)//1人加注
    {
        if (mHoldRank >= 10)
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
            else
            {
                if (callmoney + mMyBet<mtopMoney)
                {
                    //RaiseMoneyOne=RaiseMoneyMore1BB();
                    snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", callmoney);
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
        }
        else if (mHoldRank >= 8)  //至少不会弃牌
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
            else
            {
                if (callmoney + mMyBet<mtopMoney)
                {
                    RaiseMoneyOne = RaiseMoneyMore1BB();
                    snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
        }
        else if (mHoldRank >= 5)  //除非对方加大注,否则不会弃牌,yuan 4
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
            else
            {
                if (callmoney + mMyBet<mtopMoney)
                {
                    RaiseMoneyOne = RaiseMoneyMore1BB();
                    snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }
    }
    else   //if(mRaisePeople>=2) //2人加注
    {
        if (mHoldRank >= 7)
        {
            if (callmoney <= mtopMoney)
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            else
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }
    }

}

void HoldWheelOneSBSeatNumberMore5(int mHoldWeight, int mRaisePeople)
{
    long mtopMoney = getMyTopMoney(mHoldWeight);
    long mHoldRank = getMyHoldCardRank(mHoldWeight);
    long mMyBet = getMyBet();
    long RaiseMoneyOne = -1;
    if (mRaisePeople == 0)  //0人加注
    {
        if (mHoldRank >= 8) //大牌跟住
            snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
        else if (mHoldRank >= 5)
        {
            RaiseMoneyOne = RaiseMoneyMore2BB();
            snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
        }
        else if (mHoldRank >= 3)
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }
    }
    else if (mRaisePeople == 1)//1人加注
    {
        if (mHoldRank >= 10)
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
            else
            {
                if (callmoney + mMyBet<mtopMoney / 2)
                {
                    RaiseMoneyOne = RaiseMoneyMore1BB();
                    snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
        }
        else if (mHoldRank >= 8)  //
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
            else
            {
                if (callmoney + mMyBet<mtopMoney / 2)
                {
                    RaiseMoneyOne = RaiseMoneyMore1BB();
                    snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
        }
        else if (mHoldRank >= 5)  //除非对方加大注,否则不会弃牌,yuan 4
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
            else
            {
                if (callmoney + mMyBet<mtopMoney / 2)
                {
                    RaiseMoneyOne = RaiseMoneyMore1BB();
                    snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }
    }
    else   //if(mRaisePeople>=2) //2人加注
    {
        if (mHoldRank >= 10)
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
        }
        else if (mHoldRank >= 8)
        {
            if (callmoney>BB * 3)
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            else
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }
    }
}

void HoldWheelOneBBSeatNumberMore5(int mHoldWeight, int mRaisePeople)
{
    long mtopMoney = getMyTopMoney(mHoldWeight);
    long mHoldRank = getMyHoldCardRank(mHoldWeight);
    long mMyBet = getMyBet();
    long RaiseMoneyOne = -1;
    if (seatNumber - foldnum == 1)
    {
        snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
    }
    else if (mRaisePeople == 0)  //0人加注
    {
        if (mHoldRank >= 8)
        {
            RaiseMoneyOne = RaiseMoneyMore2BB();
            snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
        }
        else if (mHoldRank >= 5)
        {
            RaiseMoneyOne = RaiseMoneyMore4BB();
            snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "check \n");
        }
    }
    else if (mRaisePeople == 1)//1人加注
    {
        if (mHoldRank >= 10)
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
            else
            {
                if (callmoney + mMyBet<mtopMoney / 2)
                {
                    RaiseMoneyOne = RaiseMoneyMore1BB();
                    snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
        }
        else if (mHoldRank >= 7)  //至少不会弃牌
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
            else
            {
                if (callmoney + mMyBet<mtopMoney / 2)
                {
                    RaiseMoneyOne = RaiseMoneyMore1BB();
                    snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
        }
        else if (mHoldRank >= 4)  //除非对方加大注,否则不会弃牌
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
            else
            {
                /*if (callmoney + mMyBet<mtopMoney / 2)
                {
                    RaiseMoneyOne = RaiseMoneyMore1BB();
                    snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                }
                else*/
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }
    }
    else   //if(mRaisePeople>=2) //2人加注
    {
        if (mHoldRank >= 10)
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
        }
        else if (mHoldRank >= 8)
        {
            if (callmoney >= mtopMoney / 2)
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            else
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }
    }
}

void HoldWheelOneBBNextSeatNumberMore5(int mHoldWeight)
{
    long mHoldRank = getMyHoldCardRank(mHoldWeight);
    long RaiseMoneyOne = -1;
    if (mHoldRank >= 10)
        snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
    else if (mHoldRank >= seatnum) //加多点
    {
        RaiseMoneyOne = RaiseMoneyMore4BB();
        snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
    }
    else
    {
        snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
    }

}

void HoldWheelOneBeforeButtonSeatNumberMore5(int mHoldWeight, int mRaisePeople)
{
    long mtopMoney = getMyTopMoney(mHoldWeight);
    long mHoldRank = getMyHoldCardRank(mHoldWeight);
    long mMyBet = getMyBet();
    long RaiseMoneyOne = -1;
    if (mRaisePeople == 0)  //0人加注
    {
        if (mHoldRank >= 8) //大牌跟住
            snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
        else if (mHoldRank >= 6)
        {
            RaiseMoneyOne = RaiseMoneyMore2BB();
            snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }
    }
    else if (mRaisePeople == 1)//1人加注
    {
        if (mHoldRank >= 10)
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
            else
            {
                if (callmoney + mMyBet<mtopMoney / 2)
                {
                    //RaiseMoneyOne=RaiseMoneyMore1BB();
                    snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", callmoney);
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
        }
        else if (mHoldRank >= 8)  //至少不会弃牌
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
            else
            {
                if (callmoney + mMyBet<mtopMoney / 2)
                {
                    RaiseMoneyOne = RaiseMoneyMore1BB();
                    snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
        }
        else if (mHoldRank >= 6)  //除非对方加大注,否则不会弃牌,yuan 5
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
            else
            {
                if (callmoney + mMyBet<mtopMoney / 2)
                {
                    RaiseMoneyOne = RaiseMoneyMore1BB();
                    snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }
    }
    else   //if(mRaisePeople>=2) //2人加注
    {
        if (mHoldRank >= 10)
        {
            if (callmoney >= 20 * BB&&mHoldWeight != 40)
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            else
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }
    }

}

void HoldWheelOneOtherSeatNumberMore5(int mHoldWeight, int mRaisePeople)
{
    long mtopMoney = getMyTopMoney(mHoldWeight);
    long mHoldRank = getMyHoldCardRank(mHoldWeight);
    long mMyBet = getMyBet();
    long RaiseMoneyOne = -1;
    if (mRaisePeople == 0)  //0人加注
    {
        if (mHoldRank >= 9) //大牌跟住
            snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
        else if (mHoldRank >= 7)
        {
            RaiseMoneyOne = RaiseMoneyMore2BB();
            snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }
    }
    else if (mRaisePeople == 1)//1人加注
    {
        if (mHoldRank >= 11)  //至少不会弃牌
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
            else
            {
                if (callmoney + mMyBet<mtopMoney / 2)
                {
                    RaiseMoneyOne = RaiseMoneyMore1BB();
                    snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
        }
        else if (mHoldRank >= 7)  //除非对方加大注,否则不会弃牌
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
            else
            {
                if (callmoney + mMyBet<mtopMoney / 2)
                {
                    RaiseMoneyOne = RaiseMoneyMore1BB();
                    snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }
    }
    else   //if(mRaisePeople>=2) //2人加注
    {
        if (mHoldRank >= 10)
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }
    }
}
//5人以上第二轮
void HoldWheelTwoSeatNumberMore5(int mHoldWeight, int mRaisePeople)
{
    long mtopMoney = getMyTopMoney(mHoldWeight);
    long mHoldRank = getMyHoldCardRank(mHoldWeight);
    long mMyBet = getMyBet();
    long RaiseMoneyOne = -1;
    // double RuJuLv=player.
    long mLivePeople = seatNumber - foldnum - 1; //进入第二轮之后,除了我之外还活着的人数
    if (mLivePeople >= 3)//至少一人加注
    {
        if (mRaisePeople >= 2)
        {
            if (mHoldRank >= 10)
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            else
            {
                if (callmoney >= mtopMoney)
                    snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
                else
                {
                    if (mHoldRank >= 8)
                        snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                    else
                        snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
                }
            }
        }
        else   //if(mRaisePeople==1)
        {
            if (mHoldRank >= 11)
            {
                if (callmoney + mMyBet<mtopMoney)
                {
                    if (player[myid].action == "call")  //如果我第一轮大牌跟住
                    {
                        //RaiseMoneyOne=RaiseMoneyMore4BB();
                        snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", callmoney);
                    }
                    else
                    {
                        snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                    }
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
            else if (mHoldRank >= 7)
            {
                if (callmoney >= mtopMoney)//对方加注太多
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
                }
                else
                {
                    if (callmoney + mMyBet<mtopMoney)
                    {
                        if (player[myid].action == "call")  //如果我第一轮大牌跟住
                        {
                            RaiseMoneyOne = RaiseMoneyMore4BB();
                            snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                        }
                        else
                        {
                            snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                        }
                    }
                    else
                    {
                        snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                    }
                }
            }
            else if (mHoldRank >= 4)
            {
                if (callmoney >= mtopMoney)//对方加注太多
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
            else
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
        }
    }
    else if (mLivePeople == 2)  //至少一人加注
    {
        if (mRaisePeople == 2)
        {
            if (mHoldRank >= 11)
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            else
            {
                if (callmoney >= mtopMoney)
                    snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
        }
        else   //if(mRaisePeople==1)
        {
            if (mHoldRank >= 7)
            {
                if (callmoney >= mtopMoney)//对方加注太多
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
                else
                {
                    if (callmoney + mMyBet<mtopMoney)
                    {
                        /*if (player[myid].action == "call")  //如果我第一轮大牌跟住
                        {
                            RaiseMoneyOne = RaiseMoneyMore4BB();
                            snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                        }
                        else
                        {
                            RaiseMoneyOne = RaiseMoneyMore1BB();
                            snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                        }*/
                        snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                    }
                    else
                    {
                        snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                    }
                }
            }
            else if (mHoldRank >= 4)
            {
                if (callmoney >= mtopMoney)//对方加注太多
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
                }
                else
                {
                    if (player[myid].action == "call"&&mHoldRank <= 5)  //如果我们第一轮小牌加注
                    {
                        if (callmoney + mMyBet<mtopMoney)
                        {
                            snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                        }
                        else
                        {
                            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
                        }
                    }
                    else
                    {
                        if (callmoney + mMyBet<mtopMoney)
                        {
                            RaiseMoneyOne = RaiseMoneyMore1BB();
                            snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                        }
                        else
                        {
                            snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                        }
                    }
                }
            }
            else
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
        }

    }
    else if (mLivePeople == 1)  //这个人肯定是加注
    {
        if (mHoldRank >= 8)
        {
            if (callmoney >= mtopMoney)//对方加注太多
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
            else
            {
                if (callmoney + mMyBet<mtopMoney)
                {
                    if (player[myid].action == "call")  //如果我第一轮大牌跟住
                    {
                        RaiseMoneyOne = RaiseMoneyMore4BB();
                        snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                    }
                    else
                    {
                        RaiseMoneyOne = RaiseMoneyMore1BB();
                        snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                    }
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
        }
        else if (mHoldRank >= 4)
        {
            if (callmoney >= mtopMoney)//对方加注太多
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
            else
            {
                if (player[myid].action == "call"&&mHoldRank<5)  //如果我们第一轮小牌加注
                {
                    if (callmoney + mMyBet<mtopMoney)
                    {
                        snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                    }
                    else
                    {
                        snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
                    }
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }

    }
    else  //无人活着
    {
        snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
    }
}

void HoldWheelThreeSeatNumberMore5(int mHoldWeight)
{
    long mtopMoney = getMyTopMoney(mHoldWeight);
    long mHoldRank = getMyHoldCardRank(mHoldWeight);
    long mMyBet = getMyBet();
    if (mHoldRank >= 4)
        snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
    else
    {
        if (callmoney + mMyBet<mtopMoney)
            snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
        else
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
    }
}

//四个人第一轮
void HoldAISeatNumber4(int mHoldWeight)
{
    int mrasiepeople = getRaisePeopleNumber();
    switch (myPosition)
    {
        //庄家
    case 1:if (HoldWheel == 1)
    {
               HoldWheelOneButtonSeatNumber4(mHoldWeight, mrasiepeople);
    }
           else if (HoldWheel == 2)
           {
               HoldWheelTwoSeatNumber4(mHoldWeight, mrasiepeople);
           }
           else
           {
               HoldWheelThreeSeatNumber4(mHoldWeight);
           }
           break;
           //小盲
    case 2:if (HoldWheel == 1)
    {
               HoldWheelOneSBSeatNumber4(mHoldWeight, mrasiepeople);
    }
           else if (HoldWheel == 2)
           {
               HoldWheelTwoSeatNumber4(mHoldWeight, mrasiepeople);
           }
           else
           {
               HoldWheelThreeSeatNumber4(mHoldWeight);
           }
           break;
           //大盲
    case 3:if (HoldWheel == 1)
    {
               HoldWheelOneBBSeatNumber4(mHoldWeight, mrasiepeople);
    }
           else if (HoldWheel == 2)
           {
               HoldWheelTwoSeatNumber4(mHoldWeight, mrasiepeople);
           }
           else
           {
               HoldWheelThreeSeatNumber4(mHoldWeight);
           }
           break;
           //大盲下家
    default:if (HoldWheel == 1)
    {
                HoldWheelOneBeforeButtonSeatNumber4(mHoldWeight);
    }
            else if (HoldWheel == 2)
            {
                HoldWheelTwoSeatNumber4(mHoldWeight, mrasiepeople);
            }
            else
            {
                HoldWheelThreeSeatNumber4(mHoldWeight);
            }
            break;
    }
}

void HoldWheelOneButtonSeatNumber4(int mHoldWeight, int mRaisePeople)
{
    long mtopMoney = getMyTopMoney(mHoldWeight);
    long mHoldRank = getMyHoldCardRank(mHoldWeight);
    long mMyBet = getMyBet();
    long RaiseMoneyOne = -1;
    if (mRaisePeople == 1)
    {
        if (mHoldRank >= 10)
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
            else
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
        }
        else if (mHoldRank >= 8)
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
            else
            {
                RaiseMoneyOne = RaiseMoneyMore1BB();
                snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
            }
        }
        else if (mHoldRank >= 6)
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
            else
            {
                if (callmoney + mMyBet<mtopMoney / 2)
                {
                    RaiseMoneyOne = RaiseMoneyMore2BB();
                    snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }

    }
    else
    {
        if (seatNumber - foldnum - 1 == 2)  //第一轮说话时,第一个说话的人弃牌
        {
            if (mHoldRank >= 10)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
            else if (mHoldRank >= 8)
            {
                RaiseMoneyOne = RaiseMoneyMore4BB();
                snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
            }
            else if (mHoldRank >= 6)
            {
                RaiseMoneyOne = RaiseMoneyMore2BB();
                snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
            }
            else if (mHoldRank >= 4)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
            else
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
        }
        else  //第一个人跟注
        {
            if (mHoldRank >= 10)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
            else if (mHoldRank >= 8)
            {
                RaiseMoneyOne = RaiseMoneyMore4BB();
                snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
            }
            else if (mHoldRank >= 6)
            {
                RaiseMoneyOne = RaiseMoneyMore2BB();
                snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
            }
            else if (mHoldRank >= 4)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
            else
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
        }
    }
}

void HoldWheelOneSBSeatNumber4(int mHoldWeight, int mRaisePeople)
{
    long mtopMoney = getMyTopMoney(mHoldWeight);
    long mHoldRank = getMyHoldCardRank(mHoldWeight);
    long mMyBet = getMyBet();
    long RaiseMoneyOne = -1;
    if (mRaisePeople == 2)
    {
        if (mHoldRank >= 11)
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
        }
        else if (mHoldRank >= 10)
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
            else
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
        }
        else if (mHoldRank >= 8)
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
            else
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }
    }
    else if (mRaisePeople == 1)
    {
        if (mHoldRank >= 8)
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
            else
            {
                RaiseMoneyOne = RaiseMoneyMore2BB();
                snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
            }
        }
        else if (mHoldRank >= 4)
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
            else
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }
    }
    else
    {
        if (seatNumber - foldnum == 2)  //只有大盲与小盲还活着
        {
            if (mHoldRank >= 10)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
            else if (mHoldRank >= 6)
            {
                RaiseMoneyOne = RaiseMoneyMore4BB();
                snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
            }
            else if (mHoldRank >= 3)
            {
                RaiseMoneyOne = RaiseMoneyMore1BB();
                snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
            }
            else
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
        }
        else
        {
            if (mHoldRank >= 8)
            {
                RaiseMoneyOne = RaiseMoneyMore1BB();
                snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
            }
            else if (mHoldRank >= 6)
            {
                RaiseMoneyOne = RaiseMoneyMore4BB();
                snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
            }
            else if (mHoldRank >= 3)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
            else
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
        }
    }
}

void HoldWheelOneBBSeatNumber4(int mHoldWeight, int mRaisePeople)
{
    long mtopMoney = getMyTopMoney(mHoldWeight);
    long mHoldRank = getMyHoldCardRank(mHoldWeight);
    long mMyBet = getMyBet();
    long RaiseMoneyOne = -1;
    if (seatNumber - foldnum - 1 == 0)  //都弃牌
    {
        snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
    }
    else if (mRaisePeople >= 2)
    {
        if (mHoldRank >= 10)
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
        }
        else if (mHoldRank >= 8)
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
            else
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }
    }
    else if (mRaisePeople == 1)
    {
        if (mHoldRank >= 10)
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
        }
        else if (mHoldRank >= 6)
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
            else
            {
                if (callmoney + mMyBet<mtopMoney / 2)
                {
                    RaiseMoneyOne = RaiseMoneyMore2BB();
                    snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }

            }
        }
        else if (mHoldRank >= 4)
        {
            if (callmoney>mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
            else
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
        }
        else if (mHoldRank >= 2)
        {
            if (callmoney >= mtopMoney)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
            else
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }
    }
    else   //全都让牌
    {
        if (mHoldRank >= 7)
        {
            RaiseMoneyOne = RaiseMoneyMore1BB();
            snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
        }
        else if (mHoldRank >= 4)
        {
            RaiseMoneyOne = RaiseMoneyMore4BB();
            snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "check \n");
        }
    }
}

void HoldWheelOneBeforeButtonSeatNumber4(int mHoldWeight)
{
    long mHoldRank = getMyHoldCardRank(mHoldWeight);
    long RaiseMoneyOne = -1;
    if (mHoldRank >= 8)
    {
        RaiseMoneyOne = RaiseMoneyMore1BB();
        snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
    }
    else if (mHoldRank >= 6)
    {
        RaiseMoneyOne = RaiseMoneyMore4BB();
        snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
    }
    /*    else if(mHoldRank>=4)
    {
    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
    }*/
    else
    {
        snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
    }
}

//第二轮
void HoldWheelTwoSeatNumber4(int mHoldWeight, int mRaisePeople)
{
    long mtopMoney = getMyTopMoney(mHoldWeight);
    long mHoldRank = getMyHoldCardRank(mHoldWeight);
    long mMyBet = getMyBet();
    long RaiseMoneyOne = -1;
    // double RuJuLv=player.
    long mLivePeople = seatNumber - foldnum - 1; //进入第二轮之后,除了我之外还活着的人数
    if (mLivePeople >= 3)//至少一人加注
    {
        if (mRaisePeople == 2)
        {
            if (mHoldRank >= 10)
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            else
            {
                if (callmoney >= mtopMoney)//对方加注太多
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
        }
        else   //if(mRaisePeople==1)
        {
            if (mHoldRank >= 10)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
            else if (mHoldRank >= 8)
            {
                if (callmoney >= mtopMoney)//对方加注太多
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
                }
                else
                {
                    if (callmoney + 2 * mMyBet<mtopMoney)
                    {
                        if (player[myid].action == "call")  //如果我第一轮大牌跟住
                        {
                            RaiseMoneyOne = RaiseMoneyMore4BB();
                            snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                        }
                        else
                        {
                            RaiseMoneyOne = RaiseMoneyMore1BB();
                            snprintf(reg_msg, sizeof(reg_msg)-1, "raise %d \n", RaiseMoneyOne);
                        }
                    }
                    else
                    {
                        snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                    }
                }
            }
            else if (mHoldRank >= 5)
            {
                if (callmoney >= mtopMoney)//对方加注太多
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
            else
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
        }
    }
    else if (mLivePeople == 2)  //至少一人加注
    {
        if (mRaisePeople == 2)
        {
            if (mHoldRank >= 10)
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            else
            {
                if (callmoney >= mtopMoney)//对方加注太多
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
        }
        else   //if(mRaisePeople==1)
        {
            if (mHoldRank >= 10)
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
            else if (mHoldRank >= 8)
            {
                if (callmoney >= mtopMoney)//对方加注太多
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
                }
                else
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
            else if (mHoldRank >= 4)
            {
                if (callmoney >= mtopMoney)//对方加注太多
                {
                    snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
                }
                else
                {

                    snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
                }
            }
            else
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
        }

    }
    else if (mLivePeople == 1)  //这个人肯定是加注
    {
        if (mHoldRank >= 8)
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
        }
        else if (mHoldRank >= 4)
        {
            if (callmoney >= mtopMoney)//对方加注太多
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
            }
            else
            {
                snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
            }
        }
        else
        {
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
        }

    }
    else  //无人活着
    {
        snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
    }
}

//第三轮
void HoldWheelThreeSeatNumber4(int mHoldWeight)
{
    long mtopMoney = getMyTopMoney(mHoldWeight);
    long mHoldRank = getMyHoldCardRank(mHoldWeight);
    long mMyBet = getMyBet();
    if (mHoldRank >= 4)
        snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
    else
    {
        if (callmoney + mMyBet<mtopMoney)
            snprintf(reg_msg, sizeof(reg_msg)-1, "call \n");
        else
            snprintf(reg_msg, sizeof(reg_msg)-1, "fold \n");
    }
}

部分变量是全局变量,通过信息提取出来的。仅供纪念与参考;

(当初8000行的一个函数,提取出来这么多子函数,方便调试参数,也学到了好多:函数越短越好,能分解最好,易于调试与修改)

0 0
原创粉丝点击