int __stdcall iIOCtl(int cmd, void *data) { int result = 0; switch(cmd) { case 0: ChangeCard(); break; case 1: InitCard(); break; case 2: SetKey((struct CreateKeyInfoS *)data); break; case 3: ChangeVirtualFile((char *)data); break; default: break; } return result; }
/*机器人控制输赢 add by dwj 20121203; */ void CServerGameDesk::IAWinAutoCtrl() { if(!m_bAIWinAndLostAutoCtrl) return; bool bAIWin = false; srand((unsigned)GetTickCount()); int iResult = rand()%100; if (0 >=m_iAIHaveWinMoney ) {//机器人赢的钱少于0 机器人必赢 bAIWin = true; } else if((0 < m_iAIHaveWinMoney) && (m_iAIHaveWinMoney < m_iAIWantWinMoneyA1)) {// 机器人的赢钱在0-A1区域 并且概率符合m_iAIWinLuckyAtA1 机器人要赢; if (iResult <m_iAIWinLuckyAtA1) bAIWin = true; } else if ((m_iAIWantWinMoneyA1 <= m_iAIHaveWinMoney) && (m_iAIHaveWinMoney <m_iAIWantWinMoneyA2)) {// 机器人的赢钱在A1-A2区域 并且概率符合m_iAIWinLuckyAtA2 机器人要赢; if (iResult <m_iAIWinLuckyAtA2) bAIWin = true; } else if ((m_iAIWantWinMoneyA2 <= m_iAIHaveWinMoney) && (m_iAIHaveWinMoney <m_iAIWantWinMoneyA3)) {// 机器人的赢钱在A2-A3区域 并且概率符合m_iAIWinLuckyAtA3 机器人要赢; if (iResult <m_iAIWinLuckyAtA3) bAIWin = true; } else {// 机器人的赢钱超过A3区域 并且概率符合m_iAIWinLuckyAtA4 机器人要赢; if (iResult <m_iAIWinLuckyAtA4) bAIWin = true; } if (bAIWin) {//机器人要赢钱 if (CountAIWinMoney() < 0) { for (int i=0;i<PLAY_COUNT;i++) { for(int j = i+1; j < PLAY_COUNT; j++) { ChangeCard(i,j); if(CountAIWinMoney()>=0) { return; } } } } } else {//机器人要输钱 OutputDebugString("dwjlog::机器人要输钱"); if (CountAIWinMoney() > 0 || (m_iAIHaveWinMoney +CountAIWinMoney())<0) { for (int i=0;i<PLAY_COUNT;i++) { for(int j = i+1; j < PLAY_COUNT; j++) { ChangeCard(i,j); if (CountAIWinMoney()<= 0) { if ((m_iAIHaveWinMoney +CountAIWinMoney())<0) {//如果机器人这盘输钱了 导致机器人总赢钱数为负数,那么重新换牌; continue; } else { return ; } } } } for (int i=0;i<PLAY_COUNT;i++) { for(int j = i+1; j < PLAY_COUNT; j++) { ChangeCard(i,j); if(CountAIWinMoney()>=0) { return; } } } } } }
//根据超端需求换牌,使得指定玩家输还是赢 void CServerGameDesk::SuperSet() { CString sdp; sdp.Format("sdp_设置 服务端 m_iSuperSet[1] = %d",m_iSuperSet[1]); OutputDebugString(sdp); bool bWin = false; if (m_iSuperSet[1] == 1) { bWin = true; } else if (m_iSuperSet[1] == 2) { bWin = false; } else { return; } if (bWin) {//指定玩家要赢钱 if (CountSuperWinMoney() <= 0) { for (int i=0;i<PLAY_COUNT;i++) { for(int j = i+1; j < PLAY_COUNT; j++) { ChangeCard(i,j); if(CountSuperWinMoney()>0) { OutputDebugString("sdp_设置 服务端 [赢]找到赢的牌!"); return; } } } //大于0找不到就找等于0的情况 for (int i=0;i<PLAY_COUNT;i++) { for(int j = i+1; j < PLAY_COUNT; j++) { ChangeCard(i,j); if(CountSuperWinMoney()==0) { OutputDebugString("sdp_设置 服务端 [赢]找到和的牌!"); return; } } } } else { OutputDebugString("sdp_设置 服务端 [赢]找到赢的牌! aaa"); } } else {//指定玩家要输钱 if (CountSuperWinMoney() >= 0) { for (int i=0;i<PLAY_COUNT;i++) { for(int j = i+1; j < PLAY_COUNT; j++) { ChangeCard(i,j); if (CountSuperWinMoney()< 0) { OutputDebugString("sdp_设置 服务端 [输]找到输的牌!"); return; } } } //小于0找不到就找等于0的情况 for (int i=0;i<PLAY_COUNT;i++) { for(int j = i+1; j < PLAY_COUNT; j++) { ChangeCard(i,j); if(CountSuperWinMoney()==0) { OutputDebugString("sdp_设置 服务端 [输]找到和的牌!"); return; } } } } else { OutputDebugString("sdp_设置 服务端 [输]找到输的牌! aaa"); } } return; }