龙虎斗控制
// int代表一张牌,
// 低16位代表牌的数字 1-13 A-K
// 高16位代表花色 1-4 黑红梅方
class PokerInfo
{
public:
PokerInfo();
~PokerInfo();
void clear();
void RandomPoker();
void randPokerType(bool notSameType = false);
void randPokerPoint(INT32 index);
INT32 GetLongPoker() { return m_longPoker; }
INT32 GetHuPoker() { return m_huPoker; }
INT32 GetLongPokerPoint() { return m_longPoker & 0xFFFF; }
INT32 GetHuPokerPoint() { return m_huPoker & 0xFFFF; }
void SetLHDInfo(INT64 longGold, INT64 heGold, INT64 huGold);
private:
INT32 m_longPoker;
INT32 m_huPoker;
INT64 m_allLongGold;
INT64 m_allHuGold;
INT64 m_allHeGold;
};
PokerInfo::PokerInfo()
{
m_longPoker = 0;
m_huPoker = 0;
m_allLongGold = 0;
m_allHuGold = 0;
m_allHeGold = 0;
}
PokerInfo::~PokerInfo(){}
void PokerInfo::clear()
{
m_longPoker = 0;
m_huPoker = 0;
}
void PokerInfo::SetLHDInfo(INT64 longGold, INT64 heGold, INT64 huGold)
{
m_allLongGold = longGold;
m_allHuGold = huGold;
m_allHeGold = heGold;
}
void PokerInfo::randPokerType(bool notSameType)
{
INT32 pokerTypeLong = rand() % 4 + 1;
INT32 pokerTypeHu = rand() % 4 + 1;
if (notSameType) {
while (pokerTypeLong == pokerTypeHu) {
pokerTypeHu = rand() % 4 + 1;
}
}
m_longPoker = m_longPoker & 0xFFFF;
m_huPoker = m_huPoker & 0xFFFF;
m_longPoker = m_longPoker + (pokerTypeLong << 16);
m_huPoker = m_huPoker + (pokerTypeHu << 16);
}
void PokerInfo::randPokerPoint(INT32 index)
{
INT32 pokerLongPoint = 0;
INT32 pokerHuPoint = 0;
while (true)
{
pokerLongPoint = rand() % 13 + 1;
pokerHuPoint = rand() % 13 + 1;
if (index == 1) {
if (pokerLongPoint > pokerHuPoint) {
break;
}
}
else if (index == 2) {
pokerLongPoint = pokerHuPoint;
break;
}
else {
if (pokerLongPoint < pokerHuPoint) {
break;
}
}
}
m_longPoker = m_longPoker & 0xFFFF0000;
m_huPoker = m_huPoker & 0xFFFF0000;
m_longPoker = m_longPoker + pokerLongPoint;
m_huPoker = m_huPoker + pokerHuPoint;
}
void PokerInfo::RandomPoker()
{
clear();
randPokerPoint(1);
randPokerType();
}
根据控制确定
void CGSGameRoom::RandomPoker()
{
m_pokerInfo.clear();
INT32 result = ClacResult(); //根据控制计算龙和虎那个牌大
m_pokerInfo.randPokerPoint(result);
m_pokerInfo.randPokerType(result == 2 ? true : false);
m_awardRecords.push_back(result);
while (m_awardRecords.size() > 18) {
m_awardRecords.erase(m_awardRecords.begin());
}
}
策略是根据血池和玩家下注配牌的,没有人押注系统随机发牌 8:1:8
INT32 CGSGameRoom::ClacResult()
{
INT32 plan = 0;
if (0 == g_cGSGameHallInstance.SelectPlan(4, plan)) { //选择具体策略
WYYTools_LogMgr->Warning("CGSGameRoom::ClacResult select plan = 0");
}
INT64 n64AllSumGolds = 0;
INT64 n64AllTigerGolds = 0;
INT64 n64AllDragonGolds = 0;
for (auto iter = m_GameUserBets.begin(); iter != m_GameUserBets.end(); iter++)
{
if ( UserIDInRobotVec(iter->first) )
{
continue;
}
n64AllSumGolds += iter->second.sumGolds;
n64AllTigerGolds += iter->second.tigerGolds;
n64AllDragonGolds += iter->second.dragonGolds;
}
INT64 n64AllGolds = n64AllSumGolds + n64AllTigerGolds + n64AllDragonGolds;
INT64 planGolds = n64AllGolds * plan / 10000;
INT64 allWinDragonGolds = n64AllDragonGolds + n64AllDragonGolds;
INT64 allWinTigerGolds = n64AllTigerGolds + n64AllTigerGolds;
INT64 allWinSumGolds = n64AllSumGolds * 9 + n64AllDragonGolds + n64AllTigerGolds;
if (allWinDragonGolds == 0 && allWinTigerGolds == 0 && allWinSumGolds== 0)
{
INT32 randIcon = rand() % 17;
if (randIcon < 8) {
return 1;
}else if (randIcon == 8) {
return 2;
}else {
return 3;
}
}
INT64 absWinSumGolds = abs(allWinSumGolds - planGolds);
INT64 absWinDragonGolds = abs(allWinDragonGolds - planGolds);
INT64 absWinTigerGolds = abs(allWinTigerGolds - planGolds);
if (absWinDragonGolds <= absWinTigerGolds && absWinDragonGolds <= absWinSumGolds) {
return 1;
}
if (absWinSumGolds <= absWinDragonGolds && absWinSumGolds <= absWinTigerGolds) {
return 2;
}
if (absWinTigerGolds <= absWinDragonGolds && absWinTigerGolds <= absWinSumGolds) {
return 3;
}
return 1;
}
配置文件json:
[{ "threshold": 5000000, "info": [{ "plan": 82000, "weights": 0 }, { "plan": 60000, "weights": 0 }, { "plan": 50000, "weights": 0 }, { "plan": 30000, "weights": 0 }, { "plan": 10000, "weights": 200 }, { "plan": 9400, "weights": 300 }, { "plan": 7500, "weights": 500 }, { "plan": 6400, "weights": 1000 }, { "plan": 4500, "weights": 1000 }, { "plan": 3400, "weights": 500 }, { "plan": 1500, "weights": 500 }, { "plan": 0, "weights": 6000 }, { "plan": 0, "weights": 0 }, { "plan": 0, "weights": 0 }, { "plan": 0, "weights": 0 }] }, { "threshold": 8000000, "info": [{ "plan": 82000, "weights": 0 }, { "plan": 60000, "weights": 0 }, { "plan": 50000, "weights": 100 }, { "plan": 25000, "weights": 200 }, { "plan": 10000, "weights": 1500 }, { "plan": 9400, "weights": 500 }, { "plan": 7500, "weights": 500 }, { "plan": 6400, "weights": 600 }, { "plan": 4500, "weights": 600 }, { "plan": 3400, "weights": 2000 }, { "plan": 1500, "weights": 2500 }, { "plan": 0, "weights": 1500 }, { "plan": 0, "weights": 0 }, { "plan": 0, "weights": 0 }, { "plan": 0, "weights": 0 }] }, { "threshold": 10000000, "info": [{ "plan": 82000, "weights": 100 }, { "plan": 60000, "weights": 200 }, { "plan": 50000, "weights": 200 }, { "plan": 30000, "weights": 400 }, { "plan": 10000, "weights": 1200 }, { "plan": 9400, "weights": 300 }, { "plan": 7500, "weights": 500 }, { "plan": 6400, "weights": 800 }, { "plan": 4500, "weights": 800 }, { "plan": 3400, "weights": 2000 }, { "plan": 1500, "weights": 2500 }, { "plan": 0, "weights": 1000 }, { "plan": 0, "weights": 0 }, { "plan": 0, "weights": 0 }, { "plan": 0, "weights": 0 }] }, { "threshold": 15000000, "info": [{ "plan": 82000, "weights": 100 }, { "plan": 60000, "weights": 400 }, { "plan": 50000, "weights": 400 }, { "plan": 34000, "weights": 500 }, { "plan": 12000, "weights": 800 }, { "plan": 9000, "weights": 500 }, { "plan": 8100, "weights": 500 }, { "plan": 7200, "weights": 800 }, { "plan": 5500, "weights": 1000 }, { "plan": 3500, "weights": 2000 }, { "plan": 2200, "weights": 2000 }, { "plan": 0, "weights": 1000 }, { "plan": 0, "weights": 0 }, { "plan": 0, "weights": 0 }, { "plan": 0, "weights": 0 }] }, { "threshold": 20000000, "info": [{ "plan": 82000, "weights": 400 }, { "plan": 60000, "weights": 400 }, { "plan": 50000, "weights": 400 }, { "plan": 34000, "weights": 600 }, { "plan": 12000, "weights": 800 }, { "plan": 9000, "weights": 400 }, { "plan": 8100, "weights": 400 }, { "plan": 7200, "weights": 800 }, { "plan": 5500, "weights": 1000 }, { "plan": 3500, "weights": 1800 }, { "plan": 2200, "weights": 2000 }, { "plan": 0, "weights": 1000 }, { "plan": 0, "weights": 0 }, { "plan": 0, "weights": 0 }, { "plan": 0, "weights": 0 }] }, { "threshold": 25000000, "info": [{ "plan": 100000, "weights": 500 }, { "plan": 90000, "weights": 500 }, { "plan": 80000, "weights": 1000 }, { "plan": 70000, "weights": 500 }, { "plan": 55000, "weights": 1000 }, { "plan": 40000, "weights": 500 }, { "plan": 30000, "weights": 500 }, { "plan": 20000, "weights": 1000 }, { "plan": 15000, "weights": 500 }, { "plan": 5000, "weights": 500 }, { "plan": 2000, "weights": 500 }, { "plan": 0, "weights": 1000 }, { "plan": 0, "weights": 0 }, { "plan": 0, "weights": 0 }, { "plan": 0, "weights": 0 }] }]

浙公网安备 33010602011771号