Ejemplo n.º 1
0
        //判断出牌是否合法
        public bool canOutCard(List <Card> prevCard, List <Card> myCard)
        {
            //获取自家的CardStyle
            OutCardStyle myOutCardStyle = OutCardStyle.judgeCardStyle(myCard);

            //如果自家出牌不合法,返回false
            if (myOutCardStyle.outCardStyleEnum == OutCardStyleEnum.CANT_OUT)
            {
                return(false);
            }

            //如果上次出牌的是自己,且自家牌合法,则可以打出
            if (prevCard == null || prevCard.Count == 0)
            {
                return(true);
            }

            //获取上家的cardStyle
            OutCardStyle preOutCardStyle = OutCardStyle.judgeCardStyle(prevCard);

            //如果上家或自家出四大天王,如果是自家出的返回true,否则false
            if (preOutCardStyle.outCardStyleEnum == OutCardStyleEnum.FOUR_GHOST ||
                myOutCardStyle.outCardStyleEnum == OutCardStyleEnum.FOUR_GHOST)
            {
                return(myOutCardStyle.outCardStyleEnum == OutCardStyleEnum.FOUR_GHOST);
            }
            //上家出炸弹
            else if (preOutCardStyle.outCardStyleEnum == OutCardStyleEnum.BOMB)
            {
                //必须自家也是炸弹,比它长,或者相同长度比它大
                return(myOutCardStyle.outCardStyleEnum == OutCardStyleEnum.BOMB ||
                       preOutCardStyle.cardlength < myOutCardStyle.cardlength ||
                       preOutCardStyle.cardlength == myOutCardStyle.cardlength &&
                       preOutCardStyle.firstCardSize < myOutCardStyle.firstCardSize);
            }
            //如果上家出其他类型的牌(自家能出炸弹,或者是必须为相同类型,相同长度且要比它大
            else
            {
                return(myOutCardStyle.outCardStyleEnum == OutCardStyleEnum.BOMB ||
                       preOutCardStyle.outCardStyleEnum == myOutCardStyle.outCardStyleEnum &&
                       preOutCardStyle.cardlength == myOutCardStyle.cardlength &&
                       preOutCardStyle.firstCardSize < myOutCardStyle.firstCardSize);
            }
        }
Ejemplo n.º 2
0
        //减卡并计分,如果获胜返回true,如果没有返回false,并播放倍数翻倍和提示牌没有的音效
        public bool outCard(People people, List <Card> card, ref int integration)
        {
            //删除牌
            for (int i = 0; i < card.Count; i++)
            {
                for (int j = 0; j < people.deck.Count; j++)
                {
                    if (card[i].cardIndex == people.deck[j].cardIndex)
                    {
                        people.deck.Remove(people.deck[j]);
                        break;
                    }
                }
            }
            //更新卡组数量
            updateCardNum(people);

            //玩家出牌的次数加一
            people.outCardNum++;

            //如果出的是炸弹且是6个头或7个头,积分翻倍
            if (card[0].cardSize == card[card.Count - 1].cardSize && card.Count >= 6 && card.Count <= 7)
            {
                integration *= 2;
            }
            //如果出的牌是8个头或者是四大天王,积分翻三倍
            else if (card[0].cardSize == card[card.Count - 1].cardSize && card.Count == 8 ||
                     OutCardStyle.isFourGhost(card))
            {
                integration *= 3;
            }

            //判断牌是否出光
            if (people.deck.Count == 0)
            {
                people.isWin = true;
                return(true);
            }
            return(false);
        }