2015华为软件精英挑战赛德州扑克之手牌处理

来源:互联网 发布:java到底是什么 编辑:程序博客网 时间:2024/05/01 13:48

依据德州扑克规则,每人先发两张手牌,我们依据网上对手牌牌力的分析表格, 采取遍历的方法,计算出手牌的牌力

int myTwoCardWeight(card mtwocard[])
{
    if (mtwocard[0].point == mtwocard[1].point)
    {
        switch (mtwocard[0].point)
        {
        case 2:return 11;
        case 3:return 11;
        case 4:return 11;
        case 5:return 12;
        case 6:return 13;
        case 7:return 13;
        case 8:return 15;
        case 9:return 16;
        case 10:return 19;
        case 11:return 22;
        case 12:return 27;
        case 13:return 35;
        case 14:return 40;
        }
    }
    else if (mtwocard[0].color == mtwocard[1].color)  //如果是同花
    {
        switch (mtwocard[0].point)
        {
        case 2:
        {
                  switch (mtwocard[1].point)
                  {
                  case 3:return 7;
                  case 4:return 7;
                  case 5:return 8;
                  case 6:return 6;
                  case 7:return 6;
                  case 8:return 6;
                  case 9:return 7;
                  case 10:return 8;
                  case 11:return 8;
                  case 12:return 9;
                  case 13:return 11;
                  case 14:return 13;
                  }
        }
        case 3:
        {
                  switch (mtwocard[1].point)
                  {
                  case 2:return 7;
                  case 4:return 8;
                  case 5:return 9;
                  case 6:return 8;
                  case 7:return 7;
                  case 8:return 6;
                  case 9:return 7;
                  case 10:return 8;
                  case 11:return 9;
                  case 12:return 10;
                  case 13:return 11;
                  case 14:return 14;
                  }
        }
        case 4:
        {
                  switch (mtwocard[1].point)
                  {
                  case 2:return 7;
                  case 3:return 8;
                  case 5:return 10;
                  case 6:return 10;
                  case 7:return 9;
                  case 8:return 8;
                  case 9:return 7;
                  case 10:return 8;
                  case 11:return 9;
                  case 12:return 10;
                  case 13:return 11;
                  case 14:return 14;
                  }
        }
        case 5:
        {
                  switch (mtwocard[1].point)
                  {
                  case 2:return 8;
                  case 3:return 9;
                  case 4:return 10;
                  case 6:return 11;
                  case 7:return 10;
                  case 8:return 9;
                  case 9:return 8;
                  case 10:return 8;
                  case 11:return 9;
                  case 12:return 10;
                  case 13:return 12;
                  case 14:return 15;
                  }
        }
        case 6:
        {
                  switch (mtwocard[1].point)
                  {
                  case 2:return 6;
                  case 3:return 8;
                  case 4:return 10;
                  case 5:return 11;
                  case 7:return 11;
                  case 8:return 11;
                  case 9:return 10;
                  case 10:return 10;
                  case 11:return 9;
                  case 12:return 11;
                  case 13:return 12;
                  case 14:return 14;
                  }
        }
        case 7:
        {
                  switch (mtwocard[1].point)
                  {
                  case 2:return 6;
                  case 3:return 7;
                  case 4:return 9;
                  case 5:return 10;
                  case 6:return 11;
                  case 8:return 12;
                  case 9:return 12;
                  case 10:return 11;
                  case 11:return 11;
                  case 12:return 11;
                  case 13:return 13;
                  case 14:return 14;
                  }
        }
        case 8:
        {
                  switch (mtwocard[1].point)
                  {
                  case 2:return 6;
                  case 3:return 6;
                  case 4:return 8;
                  case 5:return 9;
                  case 6:return 11;
                  case 7:return 12;
                  case 9:return 13;
                  case 10:return 13;
                  case 11:return 13;
                  case 12:return 13;
                  case 13:return 13;
                  case 14:return 15;
                  }
        }
        case 9:
        {
                  switch (mtwocard[1].point)
                  {
                  case 2:return 7;
                  case 3:return 7;
                  case 4:return 7;
                  case 5:return 8;
                  case 6:return 10;
                  case 7:return 12;
                  case 8:return 13;
                  case 10:return 15;
                  case 11:return 15;
                  case 12:return 15;
                  case 13:return 15;
                  case 14:return 16;
                  }
        }
        case 10:
        {
                   switch (mtwocard[1].point)
                   {
                   case 2:return 8;
                   case 3:return 8;
                   case 4:return 8;
                   case 5:return 8;
                   case 6:return 10;
                   case 7:return 11;
                   case 8:return 13;
                   case 9:return 15;
                   case 11:return 18;
                   case 12:return 18;
                   case 13:return 18;
                   case 14:return 19;
                   }
        }
        case 11:
        {
                   switch (mtwocard[1].point)
                   {
                   case 2:return 8;
                   case 3:return 9;
                   case 4:return 9;
                   case 5:return 9;
                   case 6:return 9;
                   case 7:return 11;
                   case 8:return 13;
                   case 9:return 15;
                   case 10:return 18;
                   case 12:return 19;
                   case 13:return 20;
                   case 14:return 20;
                   }
        }
        case 12:
        {
                   switch (mtwocard[1].point)
                   {
                   case 2:return 9;
                   case 3:return 10;
                   case 4:return 10;
                   case 5:return 10;
                   case 6:return 11;
                   case 7:return 11;
                   case 8:return 13;
                   case 9:return 15;
                   case 10:return 18;
                   case 11:return 19;
                   case 13:return 21;
                   case 14:return 22;
                   }
        }
        case 13:
        {
                   switch (mtwocard[1].point)
                   {
                   case 2:return 11;
                   case 3:return 11;
                   case 4:return 11;
                   case 5:return 12;
                   case 6:return 12;
                   case 7:return 13;
                   case 8:return 13;
                   case 9:return 15;
                   case 10:return 18;
                   case 11:return 20;
                   case 12:return 21;
                   case 14:return 24;
                   }
        }
        case 14:
        {
                   switch (mtwocard[1].point)
                   {
                   case 2:return 13;
                   case 3:return 14;
                   case 4:return 14;
                   case 5:return 15;
                   case 6:return 14;
                   case 7:return 14;
                   case 8:return 15;
                   case 9:return 16;
                   case 10:return 19;
                   case 11:return 20;
                   case 12:return 22;
                   case 13:return 24;
                   }
        }
        }
    }
    else if (mtwocard[0].color != mtwocard[1].color)  //如果不是同花
    {
        switch (mtwocard[0].point)
        {
        case 2:
        {
                  switch (mtwocard[1].point)
                  {
                  case 3:return 1;
                  case 4:return 2;
                  case 5:return 2;
                  case 6:return 1;
                  case 7:return 0;
                  case 8:return 0;
                  case 9:return 1;
                  case 10:return 2;
                  case 11:return 2;
                  case 12:return 3;
                  case 13:return 4;
                  case 14:return 7;
                  }

        }
        case 3:
        {
                  switch (mtwocard[1].point)
                  {
                  case 2:return 1;
                  case 4:return 3;
                  case 5:return 4;
                  case 6:return 3;
                  case 7:return 1;
                  case 8:return 1;
                  case 9:return 1;
                  case 10:return 2;
                  case 11:return 2;
                  case 12:return 3;
                  case 13:return 5;
                  case 14:return 7;
                  }
        }
        case 4:
        {
                  switch (mtwocard[1].point)
                  {
                  case 2:return 2;
                  case 3:return 3;
                  case 5:return 5;
                  case 6:return 4;
                  case 7:return 3;
                  case 8:return 2;
                  case 9:return 1;
                  case 10:return 2;
                  case 11:return 3;
                  case 12:return 4;
                  case 13:return 5;
                  case 14:return 8;
                  }
        }
        case 5:
        {
                  switch (mtwocard[1].point)
                  {
                  case 2:return 2;
                  case 3:return 4;
                  case 4:return 5;
                  case 6:return 6;
                  case 7:return 5;
                  case 8:return 4;
                  case 9:return 3;
                  case 10:return 2;
                  case 11:return 3;
                  case 12:return 4;
                  case 13:return 5;
                  case 14:return 8;
                  }
        }
        case 6:
        {
                  switch (mtwocard[1].point)
                  {
                  case 2:return 1;
                  case 3:return 3;
                  case 4:return 4;
                  case 5:return 6;
                  case 7:return 6;
                  case 8:return 5;
                  case 9:return 4;
                  case 10:return 4;
                  case 11:return 3;
                  case 12:return 4;
                  case 13:return 6;
                  case 14:return 7;
                  }
        }
        case 7:
        {
                  switch (mtwocard[1].point)
                  {
                  case 2:return 0;
                  case 3:return 1;
                  case 4:return 3;
                  case 5:return 5;
                  case 6:return 6;
                  case 8:return 7;
                  case 9:return 6;
                  case 10:return 6;
                  case 11:return 5;
                  case 12:return 5;
                  case 13:return 6;
                  case 14:return 8;
                  }
        }
        case 8:
        {
                  switch (mtwocard[1].point)
                  {
                  case 2:return 0;
                  case 3:return 1;
                  case 4:return 2;
                  case 5:return 4;
                  case 6:return 5;
                  case 7:return 7;
                  case 9:return 8;
                  case 10:return 8;
                  case 11:return 7;
                  case 12:return 7;
                  case 13:return 7;
                  case 14:return 9;
                  }
        }
        case 9:
        {
                  switch (mtwocard[1].point)
                  {
                  case 2:return 1;
                  case 3:return 1;
                  case 4:return 1;
                  case 5:return 3;
                  case 6:return 4;
                  case 7:return 6;
                  case 8:return 8;
                  case 10:return 10;
                  case 11:return 9;
                  case 12:return 9;
                  case 13:return 9;
                  case 14:return 10;
                  }
        }
        case 10:
        {
                   switch (mtwocard[1].point)
                   {
                   case 2:return 2;
                   case 3:return 2;
                   case 4:return 2;
                   case 5:return 2;
                   case 6:return 4;
                   case 7:return 6;
                   case 8:return 8;
                   case 9:return 10;
                   case 11:return 13;
                   case 12:return 12;
                   case 13:return 13;
                   case 14:return 13;
                   }
        }
        case 11:
        {
                   switch (mtwocard[1].point)
                   {
                   case 2:return 2;
                   case 3:return 2;
                   case 4:return 3;
                   case 5:return 3;
                   case 6:return 3;
                   case 7:return 5;
                   case 8:return 7;
                   case 9:return 9;
                   case 10:return 13;
                   case 12:return 14;
                   case 13:return 14;
                   case 14:return 14;
                   }
        }
        case 12:
        {
                   switch (mtwocard[1].point)
                   {
                   case 2:return 3;
                   case 3:return 3;
                   case 4:return 4;
                   case 5:return 4;
                   case 6:return 4;
                   case 7:return 5;
                   case 8:return 7;
                   case 9:return 9;
                   case 10:return 12;
                   case 11:return 14;
                   case 13:return 16;
                   case 14:return 16;
                   }
        }
        case 13:
        {
                   switch (mtwocard[1].point)
                   {
                   case 2:return 4;
                   case 3:return 5;
                   case 4:return 5;
                   case 5:return 5;
                   case 6:return 6;
                   case 7:return 6;
                   case 8:return 7;
                   case 9:return 9;
                   case 10:return 13;
                   case 11:return 14;
                   case 12:return 16;
                   case 14:return 19;
                   }
        }
        case 14:
        {
                   switch (mtwocard[1].point)
                   {
                   case 2:return 7;
                   case 3:return 7;
                   case 4:return 8;
                   case 5:return 8;
                   case 6:return 7;
                   case 7:return 8;
                   case 8:return 9;
                   case 9:return 10;
                   case 10:return 13;
                   case 11:return 14;
                   case 12:return 16;
                   case 13:return 19;
                   }
        }
        }
    }
}



策略方面:

1)。依据自己所处的不同位置,采取不同的策略,比如庄家,小盲,大盲位,以及其他位置;

2)。依据本局还在玩牌的人数(也就还没有出局的人数),玩法不同。例如:人少,手牌可以玩的宽松一点,即牌力较小的牌都可以玩。人多的时候可以玩的紧一点;

3)。依据在你之前说话的人数,加注的人数,弃牌的人数,策略会有所不同;


ps:总决赛过后,还玩了好久手机版德州扑克,其实觉得,拿AA赢的概率大,然而23(同花或者不同花),都可以赢

所以总结一句:以尽可能小的代价来增加入局率


手牌很重要,手牌处理的好坏,决定着后面的打法与胜负。
0 0
原创粉丝点击