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;
}