Esempio n. 1
0
    private static uint FlushDraw(int[] cards, int[] hole)
    {
        //各スートの枚数
        int[] suitCount = RankScore.CountSuit(cards);

        //フラッシュドロー、ナッツフラドロの検査
        for (int i = 0; i < suitCount.Length; i++)
        {
            //フラドロ以上
            if (suitCount[i] >= 4)
            {
                //手札と与えられたカード全体から指定のスートを抽出してカードランクをフラグに変換
                uint flag_cards = RankScore.HighCard(cards.Where(id => id / 13 == i).ToArray());
                uint flag_hand  = RankScore.HighCard(hole.Where(id => id / 13 == i).ToArray());

                //繰り上がりで15ビット目が立つならナッツフラドロ
                if (flag_cards + flag_hand >= 0x4000)
                {
                    return(NUTS_FLUSH_DRAW);
                }
                else
                {
                    return(FLUSH_DRAW);
                }
            }
        }

        return(NO_DRAW);
    }