如何精准解读棋牌游戏的趋势图
void CTableFrameSink::OnCharLogic()
{
if (m_iGameCount>=30) //当局数大于30局的时候全部清空
{
memset(&m_GameChart,0,sizeof(m_GameChart));
m_iGameCount = 0;
m_iBigEyeCount = 0;
m_iSmallCount = 0;
m_iCockCount = 0;
}
BYTE bZhuangCount,bXianCount;
//计算牌点
bZhuangCount = m_cGameLogic.GetCardListPip(m_cbTableCardArray[INDEX_BANKER],m_cbCardCount[INDEX_BANKER]);
bXianCount = m_cGameLogic.GetCardListPip(m_cbTableCardArray[INDEX_PLAYER],m_cbCardCount[INDEX_PLAYER]);
int row,column,roweye,coleye,rowsmall,colsmall,rowcock,colcock;
row = m_GameChart.bIndex[0][0];
column = m_GameChart.bIndex[0][1];
roweye = m_GameChart.bIndex[1][0];
coleye = m_GameChart.bIndex[1][1];
rowsmall = m_GameChart.bIndex[2][0];
colsmall = m_GameChart.bIndex[2][1];
rowcock = m_GameChart.bIndex[3][0];
colcock = m_GameChart.bIndex[3][1];
m_iGameCount++;
//和局的情况
if (bZhuangCount == bXianCount)
{
m_GameChart.bMainLoad[row][column] = GREEN_TIE;
CMD_S_GameChart GameChart;
memset(&GameChart,0,sizeof(GameChart));
GameChart.bMainLoad = GREEN_TIE;
m_pITableFrame->SendTableData(INVALID_CHAIR,SUB_S_GEMERECODE,&GameChart,sizeof(GameChart));
return;
}
BYTE temp = bZhuangCount > bXianCount?RED_BANKER:BLUE_PLAYER; //记录此局的输赢
if(m_iGameCount>1)
{
if(m_GameChart.bMainLoad[row][column] == temp)
{
m_GameChart.bMainLoad[++row][column] = temp;
}
else
{
row = 0;
m_GameChart.bMainLoad[row][++column] = temp;
}
m_GameChart.bIndex[0][0] = row;
m_GameChart.bIndex[0][1] = column;
}
else
{
m_GameChart.bMainLoad[row][column] = temp;
m_GameChart.bIndex[0][0] = row;
m_GameChart.bIndex[0][1] = column;
}
if (row>0)
{
//判断大眼仔
if (column>=1)
{
m_iBigEyeCount++;
if(m_GameChart.bMainLoad[row][column-1]>0 || (m_GameChart.bMainLoad[row-1][column-1] == m_GameChart.bMainLoad[row][column-1]))
{
if(m_GameChart.bBigEye[roweye][coleye] == RED_BANKER)
{
m_GameChart.bBigEye[++roweye][coleye] = RED_BANKER;
}
else if(roweye == 0 && coleye == 0)
{
m_GameChart.bBigEye[roweye][coleye] = RED_BANKER;
}
else
{
roweye = 0;
m_GameChart.bBigEye[roweye][++coleye] = RED_BANKER;
}
}
else
{
if(m_GameChart.bBigEye[roweye][coleye] == BLUE_PLAYER)
{
m_GameChart.bBigEye[++roweye][coleye] = BLUE_PLAYER;
}
else if(roweye == 0 && coleye == 0)
{
m_GameChart.bBigEye[roweye][coleye] = BLUE_PLAYER;
}
else
{
roweye = 0;
m_GameChart.bBigEye[roweye][++coleye] = BLUE_PLAYER;
}
}
m_GameChart.bIndex[1][0] = roweye;
m_GameChart.bIndex[1][1] = coleye;
}
//判断小路
if (column>=2)
{
m_iSmallCount++;
if(m_GameChart.bMainLoad[row][column-2]>0 || (m_GameChart.bMainLoad[row-1][column-2] == m_GameChart.bMainLoad[row][column-2]))
{
if(m_GameChart.bSmallLoad[rowsmall][colsmall] == RED_BANKER)
{
m_GameChart.bSmallLoad[++rowsmall][colsmall] = RED_BANKER;
}
else if(rowsmall == 0 && colsmall == 0)
{
m_GameChart.bSmallLoad[rowsmall][colsmall] = RED_BANKER;
}
else
{
rowsmall = 0;
m_GameChart.bSmallLoad[rowsmall][++colsmall] = RED_BANKER;
}
}
else
{
if(m_GameChart.bSmallLoad[rowsmall][colsmall] == BLUE_PLAYER)
{
m_GameChart.bSmallLoad[++rowsmall][colsmall] = BLUE_PLAYER;
}
else if(rowsmall == 0 && colsmall == 0)
{
m_GameChart.bSmallLoad[rowsmall][colsmall] = BLUE_PLAYER;
}
else
{
rowsmall = 0;
m_GameChart.bSmallLoad[rowsmall][++colsmall] = BLUE_PLAYER;
}
}
m_GameChart.bIndex[2][0] = rowsmall;
m_GameChart.bIndex[2][1] = colsmall;
}
//判断小强路
if (column>=3)
{
m_iCockCount++;
if(m_GameChart.bMainLoad[row][column-3]>0 || (m_GameChart.bMainLoad[row-1][column-3] == m_GameChart.bMainLoad[row][column-3]))
{
if(m_GameChart.bCockroachRoad[rowcock][colcock] == RED_BANKER)
{
m_GameChart.bCockroachRoad[++rowcock][colcock] = RED_BANKER;
}
else if(rowcock == 0 && colcock == 0)
{
m_GameChart.bCockroachRoad[rowcock][colcock] = RED_BANKER;
}
else
{
rowcock = 0;
m_GameChart.bCockroachRoad[rowcock][++colcock] = RED_BANKER;
}
}
else
{
if(m_GameChart.bCockroachRoad[rowcock][colcock] == BLUE_PLAYER)
{
m_GameChart.bCockroachRoad[++rowcock][colcock] = BLUE_PLAYER;
}
else if(rowcock == 0 && colcock == 0)
{
m_GameChart.bCockroachRoad[rowcock][colcock] = BLUE_PLAYER;
}
else
{
rowcock = 0;
m_GameChart.bCockroachRoad[rowcock][++colcock] = BLUE_PLAYER;
}
}
m_GameChart.bIndex[3][0] = rowcock;
m_GameChart.bIndex[3][1] = colcock;
}
}
else if (row == 0)
{
//判断大眼仔
if (column>=2)
{
m_iBigEyeCount++;
while(m_GameChart.bMainLoad[row++][column-1] == m_GameChart.bMainLoad[row][column-2]);
if (m_GameChart.bMainLoad[row][column-1]>0 || m_GameChart.bMainLoad[row][column-2]>0)
{
if(m_GameChart.bBigEye[roweye][coleye] == RED_BANKER)
{
m_GameChart.bBigEye[++roweye][coleye] = RED_BANKER;
}
else if(roweye == 0 && coleye == 0)
{
m_GameChart.bBigEye[roweye][coleye] = RED_BANKER;
}
else
{
roweye = 0;
m_GameChart.bBigEye[roweye][++coleye] = RED_BANKER;
}
}
else
{
if(m_GameChart.bBigEye[roweye][coleye] == BLUE_PLAYER)
{
m_GameChart.bBigEye[++roweye][coleye] = BLUE_PLAYER;
}
else if(roweye == 0 && coleye == 0)
{
m_GameChart.bBigEye[roweye][coleye] = BLUE_PLAYER;
}
else
{
roweye = 0;
m_GameChart.bBigEye[roweye][++coleye] = BLUE_PLAYER;
}
}
m_GameChart.bIndex[1][0] = roweye;
m_GameChart.bIndex[1][1] = coleye;
}
//判断小路
if(column>=3)
{
row = 0;
m_iSmallCount++;
while(m_GameChart.bMainLoad[row++][column-1] == m_GameChart.bMainLoad[row][column-3]);
if (m_GameChart.bMainLoad[row][column-1]>0 || m_GameChart.bMainLoad[row][column-3]>0)
{
if(m_GameChart.bSmallLoad[rowsmall][colsmall] == RED_BANKER)
{
m_GameChart.bSmallLoad[++rowsmall][colsmall] = RED_BANKER;
}
else if(rowsmall == 0 && colsmall == 0)
{
m_GameChart.bSmallLoad[rowsmall][colsmall] = RED_BANKER;
}
else
{
rowsmall = 0;
m_GameChart.bSmallLoad[rowsmall][++colsmall] = RED_BANKER;
}
}
else
{
if(m_GameChart.bSmallLoad[rowsmall][colsmall] == BLUE_PLAYER)
{
m_GameChart.bSmallLoad[++rowsmall][colsmall] = BLUE_PLAYER;
}
else if(rowsmall == 0 && colsmall == 0)
{
m_GameChart.bSmallLoad[rowsmall][colsmall] = BLUE_PLAYER;
}
else
{
rowsmall = 0;
m_GameChart.bSmallLoad[rowsmall][++colsmall] = BLUE_PLAYER;
}
}
m_GameChart.bIndex[2][0] = rowsmall;
m_GameChart.bIndex[2][1] = colsmall;
}
//判断小强路
if(column>=4)
{
row = 0;
m_iCockCount++;
while(m_GameChart.bMainLoad[row++][column-1] == m_GameChart.bMainLoad[row][column-4]);
if (m_GameChart.bMainLoad[row][column-1]>0 || m_GameChart.bMainLoad[row][column-4]>0)
{
if(m_GameChart.bCockroachRoad[rowcock][colcock] == RED_BANKER)
{
m_GameChart.bCockroachRoad[++rowcock][colcock] = RED_BANKER;
}
else if(rowcock == 0 && colcock == 0)
{
m_GameChart.bCockroachRoad[rowcock][colcock] = RED_BANKER;
}
else
{
rowcock = 0;
m_GameChart.bCockroachRoad[rowcock][++colcock] = RED_BANKER;
}
}
else
{
if(m_GameChart.bCockroachRoad[rowcock][colcock] == BLUE_PLAYER)
{
m_GameChart.bCockroachRoad[++rowcock][colcock] = BLUE_PLAYER;
}
else if(rowcock == 0 && colcock == 0)
{
m_GameChart.bCockroachRoad[rowcock][colcock] = BLUE_PLAYER;
}
else
{
rowcock = 0;
m_GameChart.bCockroachRoad[rowcock][++colcock] = BLUE_PLAYER;
}
}
m_GameChart.bIndex[3][0] = rowcock;
m_GameChart.bIndex[3][1] = colcock;
}
}
CMD_S_GameChart GameChart;
memset(&GameChart,0,sizeof(GameChart));
GameChart.bMainLoad = m_GameChart.bMainLoad[m_GameChart.bIndex[0][0]][m_GameChart.bIndex[0][1]];
GameChart.bBigEye = m_GameChart.bBigEye[m_GameChart.bIndex[1][0]][m_GameChart.bIndex[1][1]];
GameChart.bSmallLoad = m_GameChart.bSmallLoad[m_GameChart.bIndex[2][0]][m_GameChart.bIndex[2][1]];
GameChart.bCockroachRoad = m_GameChart.bCockroachRoad[m_GameChart.bIndex[3][0]][m_GameChart.bIndex[3][1]];
//发送单个,如果要发送整个的内容
//则只需这么改
/*
memset(GameChart.bMainLoad,m_GameChart.bMainLoad,sizeof(m_GameChart.bMainLoad);
*/
m_pITableFrame->SendTableData(INVALID_CHAIR,SUB_S_GEMERECODE,&GameChart,sizeof(GameChart));
//m_pITableFrame->SendTableData(INVALID_CHAIR,SUB_S_GEMERECODE,NULL,0);
}
推荐阅读