德州扑克

本文介绍了一种快速计算德州扑克牌型的方法,重点在于理解如何用16进制表示牌,并详细说明了同花、顺子和葫芦的计算过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

一个快速计算德州扑克牌型的方法. 

只有生成图那个地方是关键, 看懂了就全懂了

在车上写的, 只写了 同花和 顺子,葫芦, 似乎没什么问题

牌用16进制表示 , 高4位 是颜色位, 低4位是数值位

 

/*
  黑桃从 0x02开始,
  红心从 0x12 开始
  
  16进制的高位 表示颜色 , 低位表示牌值
*/

enum CardColor{
    enum_spade = 0x0, // 黑桃
    enum_heart = 0x10 , //红心
    enum_diamond = 0x20 , //方块
    enum_club = 0x30 //梅花
};


struct card_map{
    enum {enum_CardWithoutColor = 15,  enum_CardWithColor = 4};
    card_map(){}
    void clear(){
        memset(__mapWithColor,0,enum_CardWithColor * enum_CardWithoutColor * sizeof(char));
        memset(__mapWithoutColor,0 , enum_CardWithoutColor);
    }

    static int getCardColor(char card){
        return card >> 4 & 0x0f;
    }
    static int getCardValue(char card){
        return card & 0x0f;
    }

    bool genMap(char * inCards , int iLen){
        if(NULL == inCards || iLen == 0)
            return false;
        clear();
        char card = 0;
        for(int i = 0 ; i < iLen ; ++i){
            card = inCards[i];
            // 牌没有 0  ,从0x02开始
            if(card == 0)
                continue;

            int iColorIndex = getCardColor(card);
            int iValue = getCardValue(card);

            __mapWithoutColor[iValue]++;
            __mapWithColor[iColorIndex][0]++;
            __mapWithColor[iColorIndex]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值