コード例 #1
0
        protected override string DirectlyWin(DescendingHandCards whiteCards, DescendingHandCards blackCards)
        {
            if (whiteCards.IsStraightCards() &&
                !blackCards.IsStraightFlushCards() &&
                !blackCards.IsFourOfAKindCards() &&
                !blackCards.IsFullHouseCards() &&
                !blackCards.IsFlushCards())
            {
                HasResult = true;

                return(string.Format(StringConstant.WHITE_WIN_TEMPLATE, StringConstant.STRAIGHT));
            }

            if (blackCards.IsStraightCards() &&
                !whiteCards.IsStraightFlushCards() &&
                !whiteCards.IsFourOfAKindCards() &&
                !whiteCards.IsFullHouseCards() &&
                !whiteCards.IsFlushCards())
            {
                HasResult = true;

                return(string.Format(StringConstant.BLACK_WIN_TEMPLATE, StringConstant.STRAIGHT));
            }

            return(StringConstant.CHEAT);
        }
コード例 #2
0
        protected override string CompareSameType(DescendingHandCards whiteCards, DescendingHandCards blackCards)
        {
            var theMaxValueWhiteCard = whiteCards.GetTheMaxValueCard();
            var theMaxValueBlackCard = blackCards.GetTheMaxValueCard();

            HasResult = true;

            return(theMaxValueWhiteCard.CompareWith(theMaxValueBlackCard));
        }
コード例 #3
0
        public override bool IsCheckingFinished(DescendingHandCards whiteCards, DescendingHandCards blackCards)
        {
            if (whiteCards.IsMessyCards() && blackCards.IsMessyCards())
            {
                Result = CompareSameType(whiteCards, blackCards);
            }

            return(HasResult);
        }
コード例 #4
0
        protected override string CompareSameType(DescendingHandCards whiteCards, DescendingHandCards blackCards)
        {
            var whiteFullHouseCard = whiteCards.GetSameNumberCardByCount(4);
            var blackFullHouseCard = blackCards.GetSameNumberCardByCount(4);

            var compareResult = whiteFullHouseCard.CompareWith(blackFullHouseCard);

            HasResult = true;

            return(compareResult.Equals(StringConstant.TIE) ? StringConstant.CHEAT : compareResult);
        }
コード例 #5
0
ファイル: FlushWinChecker.cs プロジェクト: hejiangle/TDD-DOJO
        public override bool IsCheckingFinished(DescendingHandCards whiteCards, DescendingHandCards blackCards)
        {
            if (!HasResult && whiteCards.IsFlushCards() && blackCards.IsFlushCards())
            {
                Result = CompareSameType(whiteCards, blackCards);
            }
            if (!HasResult && (whiteCards.IsFlushCards() || blackCards.IsFlushCards()))
            {
                Result = DirectlyWin(whiteCards, blackCards);
            }

            return(HasResult);
        }
コード例 #6
0
ファイル: Umpire.cs プロジェクト: hejiangle/TDD-DOJO
        public void ReadBlackCards(List <string> blackHandCars = null)
        {
            Console.WriteLine(INPUT_BLACK_CARDS);
            var gotThem = blackHandCars ?? Console.ReadLine()?.Split(' ').ToList();

            try
            {
                _blackHandCards = new DescendingHandCards(gotThem);
            }
            catch (IsNotCardException e)
            {
                Console.WriteLine(e.Message);
                Environment.Exit(0);
            }
        }
コード例 #7
0
        protected override string DirectlyWin(DescendingHandCards whiteCards, DescendingHandCards blackCards)
        {
            if (whiteCards.IsTwoPairsCards() && (blackCards.IsMessyCards() || blackCards.IsOnePairCards()))
            {
                HasResult = true;
                return(string.Format(StringConstant.WHITE_WIN_TEMPLATE, StringConstant.TWO_PAIRS));
            }

            if (blackCards.IsTwoPairsCards() && (whiteCards.IsMessyCards() || whiteCards.IsOnePairCards()))
            {
                HasResult = true;
                return(string.Format(StringConstant.BLACK_WIN_TEMPLATE, StringConstant.TWO_PAIRS));
            }

            return(StringConstant.TIE);
        }
コード例 #8
0
        protected override string CompareSameType(DescendingHandCards whiteCards, DescendingHandCards blackCards)
        {
            var whitePairs = whiteCards.GetTwoPairsCards();
            var blackPairs = blackCards.GetTwoPairsCards();

            var highCard = whitePairs.CompareWith(blackPairs);

            if (highCard.Equals(StringConstant.TIE))
            {
                var singleWhiteCard = whiteCards.GetSingleCards();
                var singleBlackCard = blackCards.GetSingleCards();

                highCard = singleWhiteCard.CompareWith(singleBlackCard);
            }

            HasResult = true;
            return(highCard);
        }
コード例 #9
0
        protected override string CompareSameType(DescendingHandCards whiteCards, DescendingHandCards blackCards)
        {
            var whitePair = whiteCards.GetSameNumberCardByCount(2);
            var blackPair = blackCards.GetSameNumberCardByCount(2);

            var compareResult = whitePair.CompareWith(blackPair);

            HasResult = true;

            if (!compareResult.Equals(StringConstant.TIE))
            {
                return(compareResult);
            }

            var whiteSingleCards = whiteCards.GetSingleCards();
            var blackSingleCards = blackCards.GetSingleCards();

            return(whiteSingleCards.CompareWith(blackSingleCards));
        }
コード例 #10
0
        protected override string DirectlyWin(DescendingHandCards whiteCards, DescendingHandCards blackCards)
        {
            if (whiteCards.IsStraightFlushCards() &&
                !blackCards.IsStraightFlushCards())
            {
                HasResult = true;

                return(string.Format(StringConstant.WHITE_WIN_TEMPLATE, StringConstant.STRAIGHT_FLUSH));
            }

            if (!whiteCards.IsStraightFlushCards() &&
                blackCards.IsStraightFlushCards())
            {
                HasResult = true;

                return(string.Format(StringConstant.BLACK_WIN_TEMPLATE, StringConstant.STRAIGHT_FLUSH));
            }

            return(StringConstant.TIE);
        }
コード例 #11
0
        protected override string DirectlyWin(DescendingHandCards whiteCards, DescendingHandCards blackCards)
        {
            if (whiteCards.IsFourOfAKindCards() &&
                !blackCards.IsFourOfAKindCards() &&
                !blackCards.IsStraightFlushCards())
            {
                HasResult = true;

                return(string.Format(StringConstant.WHITE_WIN_TEMPLATE, StringConstant.FOUR_OF_A_KIND));
            }

            if (blackCards.IsFourOfAKindCards() &&
                !whiteCards.IsFourOfAKindCards() &&
                !whiteCards.IsStraightFlushCards())
            {
                HasResult = true;

                return(string.Format(StringConstant.BLACK_WIN_TEMPLATE, StringConstant.FOUR_OF_A_KIND));
            }

            return(StringConstant.TIE);
        }
コード例 #12
0
        protected override string CompareSameType(DescendingHandCards whiteCards, DescendingHandCards blackCards)
        {
            HasResult = true;

            return(whiteCards.CompareWith(blackCards));
        }
コード例 #13
0
 protected abstract string CompareSameType(DescendingHandCards whiteCards, DescendingHandCards blackCards);
コード例 #14
0
 protected abstract string DirectlyWin(DescendingHandCards whiteCards, DescendingHandCards blackCards);
コード例 #15
0
 public abstract bool IsCheckingFinished(DescendingHandCards whiteCards, DescendingHandCards blackCards);
コード例 #16
0
 public string Check(DescendingHandCards whiteCards, DescendingHandCards blackCards)
 {
     return(_checkers.Find(checker => checker.IsCheckingFinished(whiteCards, blackCards)).ShowHand());
 }
コード例 #17
0
 protected override string DirectlyWin(DescendingHandCards whiteCards, DescendingHandCards blackCards)
 {
     throw new System.NotImplementedException();
 }