对棋牌走势图的判断

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

}

posted on 2011-08-17 23:36  belie8  阅读(215)  评论(0编辑  收藏  举报

导航