コード例 #1
0
        public void ReferInvalidFrequentFlyerNumberApplicant()
        {
            var application = new Applicant();

            DecisionEnum decision = manager.Evaluate(application);

            Assert.Equal(DecisionEnum.ReferredToHuman, decision);
        }
コード例 #2
0
        public void IsDetailedChangeMoqPropertiesUnitTest()
        {
            var application = new Applicant();

            application.Age = 30;
            DecisionEnum decision = manager.EvaluateChangeMoqProperties(application);

            Assert.Equal(ValidationModeEnum.Detailed, _validator.Object.ValidationMode);
        }
コード例 #3
0
        public void LicenceExpiredApplicant()
        {
            var application = new Applicant()
            {
                Age = 19
            };

            DecisionEnum decision = manager.EvaluateProperties(application);

            Assert.Equal(DecisionEnum.AutoDeclined, decision);
        }
コード例 #4
0
        public void LowIncomeApplicantAutoDeclined()
        {
            var application = new Applicant
            {
                Id                  = 1,
                FirstName           = "Alan G. ",
                LastName            = "Huffman",
                Age                 = 40,
                FrequentFlyerNumber = "a",
                GrossAnnualIncome   = 1000
            };
            DecisionEnum decision = manager.Evaluate(application);

            Assert.Equal(DecisionEnum.AutoDeclined, decision);
        }
コード例 #5
0
        public void YoungApplicantReferredToHuman()
        {
            var application = new Applicant
            {
                Id                  = 1,
                FirstName           = "Alan G. ",
                LastName            = "Huffman",
                Age                 = 19,
                FrequentFlyerNumber = "x",
                GrossAnnualIncome   = 1000
            };
            DecisionEnum decision = manager.Evaluate(application);

            Assert.Equal(DecisionEnum.ReferredToHuman, decision);
        }
コード例 #6
0
        //public enum GameStatusEnum
        //{
        //    BeforePlayersReady,
        //    BeforeMakingBets,
        //    DealingInitialCards,
        //    AskingDealOrStand,
        //    Competing,
        //    RecyclingCards
        //}
        //public GameStatusEnum GameStatus { get; private set; }


        public IList <AnimationEvent> Next()
        {
            DecisionEnum decision = currentPlayer.DealOrStand();

            return(HandlePlayerDecision(currentPlayer, decision));
        }
コード例 #7
0
        /// <summary>
        /// 处理玩家对于要牌询问的回答
        /// </summary>
        /// <param name="player">玩家</param>
        /// <param name="decision">玩家决定</param>
        public IList <AnimationEvent> HandlePlayerDecision(Player player, DecisionEnum decision)
        {
            IList <AnimationEvent> animations = new List <AnimationEvent>();

            switch (decision)
            {
            case DecisionEnum.Undefined:
                break;

            case DecisionEnum.Deal:
                Card card = DealVisibleCard(player.Seat);
                animations.Add(new DealCardEvent(player.Seat, card));
                if (BestSum(player.Seat.Cards) > 21)
                {
                    if (NextPlayer() == null)
                    {
                        foreach (PlayerSeat playerSeat in playerSeats)
                        {
                            animations.Add(new CompeteEvent(playerSeat, Evaluate(playerSeat.ID, out int bet), bet));
                        }
                        animations.Add(new OverTwentyOneEvent(bankerSeat));

                        ///发一张牌后庄家爆牌直接结束本轮游戏 进行结算(爆牌动画 结算动画)
                    }
                    else
                    {
                        animations.Add(new OverTwentyOneEvent(player.Seat));
                        //发一张牌后玩家爆牌 切换用户(爆牌动画切换动画)
                    }
                }
                else
                {
                }    ///发一张牌后正常 不切换用户
                break;

            case DecisionEnum.Stand:
                Player nextPlayer = NextPlayer();
                if (nextPlayer == null)
                {
                    ///庄家不要牌 直接结束本轮游戏 进行结算(结算动画)
                    foreach (PlayerSeat playerSeat in playerSeats)
                    {
                        animations.Add(new CompeteEvent(playerSeat, Evaluate(playerSeat.ID, out int bet), bet));
                    }
                }
                else if (nextPlayer.Seat is BankerSeat)
                {
                    bool AllFail = true;
                    foreach (Seat seat in playerSeats)
                    {
                        if (BestSum(seat.Cards) <= 21)
                        {
                            AllFail = false;
                            break;
                        }
                    }
                    if (AllFail)
                    {
                        foreach (PlayerSeat playerSeat in playerSeats)
                        {
                            animations.Add(new CompeteEvent(playerSeat, Evaluate(playerSeat.ID, out int bet), bet));
                        }
                        ///庄家直接获胜(结算动画)
                    }
                    else
                    {
                        animations.Add(new SwitchPlayerEvent(player.Seat, bankerSeat));    ///切换到庄家(切换动画)
                    }
                }
                else
                {
                    animations.Add(new SwitchPlayerEvent(player.Seat, nextPlayer.Seat));     ///切换下一个玩家(切换动画)
                }
                break;

            default:
                break;
            }
            return(animations);
        }