Beispiel #1
0
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;
}
Beispiel #2
0
/*机器人控制输赢 
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;
					}
				}
			}	

		}
	}
}
Beispiel #3
0
//根据超端需求换牌,使得指定玩家输还是赢
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;
}