コード例 #1
0
        //---------------------------------------------------------------------
        Card _getNextOrLastCardTypeCard(MaJiangType card_type, MaJiangSuit card_suit, bool is_same_suit, bool is_next)
        {
            Card        card          = null;
            MaJiangType need_cardtype = MaJiangType.Two;

            if (is_next)
            {
                int next_cardtype = ((int)card_type) + 1;
                if (next_cardtype == 15)
                {
                    need_cardtype = MaJiangType.Two;
                }
                else
                {
                    need_cardtype = (MaJiangType)next_cardtype;
                }
            }
            else
            {
                int last_cardtype = ((int)card_type) - 1;
                if (last_cardtype == 1)
                {
                    need_cardtype = MaJiangType.Nine;
                }
                else
                {
                    need_cardtype = (MaJiangType)last_cardtype;
                }
            }

            if (is_same_suit)
            {
                List <Card> list_same_suitcards = null;
                if (mapSameSuitCard.TryGetValue(card_suit, out list_same_suitcards))
                {
                    byte need_cardtype_bte = (byte)need_cardtype;
                    var  list_suit_card    = list_same_suitcards.Where(x => x.Type == need_cardtype_bte);
                    if (list_suit_card != null && list_suit_card.Count() > 0)
                    {
                        card = list_suit_card.First();
                        _removeCard(card);
                    }
                }
            }
            else
            {
                card = _getSameTypeCard(need_cardtype);
            }

            return(card);
        }
コード例 #2
0
        //---------------------------------------------------------------------
        Card _getSameTypeCard(MaJiangType card_type)
        {
            Card        card = null;
            List <Card> list_sametypecard = null;

            mapSameTypeCard.TryGetValue(card_type, out list_sametypecard);
            if (list_sametypecard != null && list_sametypecard.Count > 0)
            {
                int index = RandomEx.Next(0, list_sametypecard.Count);
                card = list_sametypecard[index];
                _removeCard(card);
            }

            return(card);
        }
コード例 #3
0
        //---------------------------------------------------------------------
        List <Card> _getPairWithType(MaJiangType type)
        {
            List <Card> list_sametypecard = null;

            mapSameTypeCard.TryGetValue(type, out list_sametypecard);
            if (list_sametypecard == null || list_sametypecard.Count < 2)
            {
                return(null);
            }
            List <Card> list_cards = list_sametypecard.Take(2).ToList();

            foreach (var i in list_cards)
            {
                _removeCard(i);
            }

            return(list_cards);
        }
コード例 #4
0
        //---------------------------------------------------------------------
        public static string GetMaJiangCardResName(CardData card_data)
        {
            string      card_res_name = "";
            MaJiangSuit majiang_suit  = (MaJiangSuit)card_data.suit;

            if (majiang_suit != MaJiangSuit.Wan && majiang_suit != MaJiangSuit.Tong &&
                majiang_suit != MaJiangSuit.Tiao)
            {
                card_res_name = majiang_suit.ToString();
            }
            else
            {
                MaJiangType majiang_type = (MaJiangType)card_data.type;
                card_res_name = majiang_type.ToString() + majiang_suit.ToString();
            }

            return(card_res_name);
        }