www.pudn.com > mytest.rar > GameRule.cpp


// GameRule.cpp: implementation of the CGameParseRule class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#include "stdafx.h" 
#include "mytest.h" 
#include "GameRule.h" 
 
#ifdef _DEBUG 
#undef THIS_FILE 
static char THIS_FILE[]=__FILE__; 
#define new DEBUG_NEW 
#endif 
 
////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 
 
CGameParseRule::CGameParseRule() 
{ 
 
} 
 
CGameParseRule::~CGameParseRule() 
{ 
 
} 
 
int CGameParseRule::getOneTotal(__int64 iNumber) 
{ 
	int iTotal = 0; 
 
	while(iNumber) 
	{ 
		iTotal++; 
		iNumber &= (iNumber-1); 
	} 
 
	return iTotal; 
} 
 
//parse 1, 2 
int	CGameParseRule::ParsePlayNo(__int64 iNumber) 
{ 
	__int64 iTemp = iNumber; 
	int iInfo = (int)(iTemp >> 61); 
	switch(iInfo) 
	{ 
	case 0: 
	case 1: 
	case 2: 
		m_iPlayNo = iInfo; 
		ParseOper(iNumber); 
		break; 
	case 3: 
		iTemp = iNumber; 
		iInfo = (int)(iTemp >> 59); 
		iInfo &= 3; 
		m_iMyNo = iInfo; 
		break; 
	default: 
		break; 
	} 
	return 0; 
} 
 
// parse 3, 4 
int	CGameParseRule::ParseOper(__int64 iNumber) 
{ 
	__int64 iTemp = iNumber; 
	int iInfo = (int)(iTemp >> 59); 
	iInfo &= 3; 
	m_iOper = iInfo; 
	switch(m_iOper) 
	{ 
	case 1: 
		iInfo = (int)(iTemp >> 54); 
		iInfo &= 31; 
		m_iOperType = iInfo; 
		break; 
	case 3: 
		{ 
			iInfo = (int)(iTemp >> 54); 
			iInfo &= 31; 
			int iTemp = iInfo; 
			int iMultipler = iTemp & 3; 
			iTemp = iInfo; 
			int iMultiply = iTemp >> 2; 
			m_iOperType = iMultipler * (1 << iMultiply); 
		} 
		break; 
	case 2: 
		iInfo = (int)(iTemp >> 54); 
		iInfo &= 31; 
		m_iOperType = iInfo; 
	case 0: 
		iTemp = iNumber; 
		iTemp &= 18014398509481983; 
		m_iCards = iTemp; 
		break; 
	default: 
		break; 
	} 
	return 0; 
} 
 
int CGameParseRule::ParseInfo(__int64 iCardNum) 
{ 
	m_iCardInfo = iCardNum; 
	ParsePlayNo(iCardNum); 
	return 0; 
} 
 
int	CGameParseRule::getPlayNo() 
{ 
	return m_iPlayNo;  
} 
 
int CGameParseRule::getMyNo() 
{ 
	return m_iMyNo; 
} 
 
int	CGameParseRule::getOper() 
{ 
	return m_iOper; 
} 
 
int	CGameParseRule::getOperType() 
{ 
	return m_iOperType; 
} 
 
__int64 CGameParseRule::getCards() 
{ 
	return m_iCards; 
}