Esempio n. 1
0
        public bool PopEnable(List <byte> cards, out DDZCardType.DDZ_POKER_TYPE type)
        {
            type = DDZCardType.DDZ_POKER_TYPE.DDZ_PASS;
            bool isRule = false;

            switch (cards.Count)
            {
            case 1:
                isRule = true;
                type   = DDZCardType.DDZ_POKER_TYPE.Single;
                break;

            case 2:
                if (IsDouble(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.TWIN;
                }
                else if (IsJokerBoom(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.KING_BOMB;
                }
                break;

            case 3:
                if (IsOnlyThree(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.TRIPLE;
                }
                break;

            case 4:
                if (IsBoom(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.FOUR_BOMB;
                }
                else if (IsThreeAndOne(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.TRIPLE_WITH_SINGLE;
                }

                break;

            case 5:
                if (IsStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.STRAIGHT_SINGLE;
                }
                else if (IsThreeAndTwo(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.TRIPLE_WITH_TWIN;
                }
                break;

            case 6:
                if (IsStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.STRAIGHT_SINGLE;
                }
                else if (IsTripleStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.PLANE_PURE;
                }
                else if (IsDoubleStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.STRAIGHT_TWIN;
                }
                else if (IsSiDaiEr(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.FOUR_WITH_SINGLE;
                }
                break;

            case 7:
                if (IsStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.STRAIGHT_SINGLE;
                }
                break;

            case 8:
                if (IsStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.STRAIGHT_SINGLE;
                }
                else if (IsDoubleStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.STRAIGHT_TWIN;
                }
                else if (isPlaneWithSingle(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.PLANE_WITH_SINGLE;
                }
                else if (IsSiDaiDoubleDui(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.FOUR_WITH_TWIN;
                }
                break;

            case 9:
                if (IsStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.STRAIGHT_SINGLE;
                }
                else if (IsTripleStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.PLANE_PURE;
                }
                break;

            case 10:
                if (IsStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.STRAIGHT_SINGLE;
                }
                else if (IsDoubleStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.STRAIGHT_TWIN;
                }
                else if (isPlaneWithTwin(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.PLANE_WITH_TWIN;
                }
                break;

            case 11:
                if (IsStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.STRAIGHT_SINGLE;
                }
                break;

            case 12:
                if (IsStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.STRAIGHT_SINGLE;
                }
                else if (IsDoubleStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.STRAIGHT_TWIN;
                }
                else if (isPlaneWithSingle(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.PLANE_WITH_SINGLE;
                }
                else if (IsTripleStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.PLANE_PURE;
                }
                break;

            case 13:
                break;

            case 14:
                if (IsDoubleStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.STRAIGHT_TWIN;
                }
                break;

            case 15:
                if (IsTripleStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.PLANE_PURE;
                }
                else if (isPlaneWithTwin(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.PLANE_WITH_TWIN;
                }
                break;

            case 16:
                if (IsDoubleStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.STRAIGHT_TWIN;
                }
                else if (isPlaneWithSingle(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.PLANE_WITH_SINGLE;
                }
                break;

            case 17:
                break;

            case 18:
                if (IsDoubleStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.STRAIGHT_TWIN;
                }
                else if (IsTripleStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.PLANE_PURE;
                }
                break;

            case 19:
                break;

            case 20:
                if (IsDoubleStraight(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.STRAIGHT_TWIN;
                }
                else if (isPlaneWithSingle(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.PLANE_WITH_SINGLE;
                }
                else if (isPlaneWithTwin(cards))
                {
                    isRule = true;
                    type   = DDZCardType.DDZ_POKER_TYPE.PLANE_WITH_TWIN;
                }
                break;

            default:
                break;
            }

            return(isRule);
        }
Esempio n. 2
0
        public bool CompareCards(List <byte> myCards, long userId, List <DDZCompareCard> lastCardsList)
        {
            DDZCompareCard lastCards = new DDZCompareCard(); lastCards.pokers = new List <byte>();

            if (lastCardsList.Count > 0)
            {
                for (int i = lastCardsList.Count - 1; i > -1; i--)
                {
                    if (lastCardsList[i].POKER_TYPE == DDZCardType.DDZ_POKER_TYPE.DDZ_PASS && lastCardsList[i].pokers.Count == 0)
                    {
                        continue;
                    }

                    lastCards.POKER_TYPE = lastCardsList[i].POKER_TYPE; lastCardsList[i].pokers.ForEach(u => lastCards.pokers.Add(u)); lastCards.userId = lastCardsList[i].userId;

                    break;
                }
            }
            DDZCardType.DDZ_POKER_TYPE myCardType = DDZCardType.DDZ_POKER_TYPE.DDZ_PASS;

            bool IsPopEnable = PopEnable(myCards, out myCardType);

            if (!IsPopEnable)
            {
                return(false);
            }

            if (lastCards.pokers.Count == 0 && lastCards.POKER_TYPE == DDZCardType.DDZ_POKER_TYPE.DDZ_PASS)
            {
                if (myCardType == DDZCardType.DDZ_POKER_TYPE.KING_BOMB || myCardType == DDZCardType.DDZ_POKER_TYPE.FOUR_BOMB)
                {
                    bombNum++;
                }

                ChangeCard(myCards, userId, myCardType);
                return(true);
            }
            else
            {
                if (lastCards.POKER_TYPE == DDZCardType.DDZ_POKER_TYPE.KING_BOMB)
                {
                    return(false);
                }
                else if (myCardType == DDZCardType.DDZ_POKER_TYPE.KING_BOMB)
                {
                    bombNum++;
                    ChangeCard(myCards, userId, myCardType);
                    return(true);
                }
                if (lastCards.POKER_TYPE != DDZCardType.DDZ_POKER_TYPE.FOUR_BOMB && myCardType == DDZCardType.DDZ_POKER_TYPE.FOUR_BOMB)
                {
                    bombNum++;
                    ChangeCard(myCards, userId, myCardType);
                    return(true);
                }

                if (myCards.Count != lastCards.pokers.Count)
                {
                    return(false);
                }

                if (myCardType != lastCards.POKER_TYPE)
                {
                    return(false);
                }

                var pokerNum0 = PokerCardsHelper.GetPokerNum(lastCards.pokers[0]);
                var pokerNum1 = PokerCardsHelper.GetPokerNum(myCards[0]);

                if (pokerNum1 == 2 && pokerNum0 <= 14 && pokerNum0 != 2)
                {
                    if (myCardType == DDZCardType.DDZ_POKER_TYPE.FOUR_BOMB)
                    {
                        bombNum++;
                    }
                    ChangeCard(myCards, userId, myCardType);
                    return(true);
                }
                else if (pokerNum0 == 2 && pokerNum1 <= 14)
                {
                    return(false);
                }
                if (pokerNum1 > pokerNum0)
                {
                    if (myCardType == DDZCardType.DDZ_POKER_TYPE.FOUR_BOMB)
                    {
                        bombNum++;
                    }
                    ChangeCard(myCards, userId, myCardType);
                    return(true);
                }
            }

            return(false);
        }
Esempio n. 3
0
 public void ChangeCard(List <byte> myCards, long userId, DDZCardType.DDZ_POKER_TYPE type)
 {
     currCard.userId = userId; myCards.ForEach(u => currCard.pokers.Add(u)); currCard.POKER_TYPE = type;
 }