public TexasGameResult GetCompareResult(
            TexasHoldEmPlayer blackPlayer,
            TexasHoldEmPlayer whitePlayer)
        {
            var texasGameResult = new TexasGameResult {
                WinLevel = new HighCardLevel().Name
            };


            var blackPlayerHandCards = blackPlayer.HandCards.Cards;
            var whitePlayerHandCards = whitePlayer.HandCards.Cards;

            var compareResults = blackPlayerHandCards.Zip(whitePlayerHandCards, (black, white) =>
                                                          black.CompareTo(white)).ToList();

            var blackLargeNumberIndex = compareResults.LastIndexOf(1);
            var whiteLargeNumberIndex = compareResults.LastIndexOf(-1);

            if (blackLargeNumberIndex > whiteLargeNumberIndex)
            {
                texasGameResult.WinnerName = blackPlayer.Name;
                texasGameResult.WinCard    = blackPlayerHandCards.ElementAtOrDefault(blackLargeNumberIndex)?.ToCardValueString();
            }

            if (blackLargeNumberIndex < whiteLargeNumberIndex)
            {
                texasGameResult.WinnerName = whitePlayer.Name;
                texasGameResult.WinCard    = whitePlayerHandCards.ElementAtOrDefault(whiteLargeNumberIndex)?.ToCardValueString();
            }

            return(texasGameResult);
        }
예제 #2
0
        public static TexasGameResult CompareHandCards(TexasHoldEmPlayer blackPlayer, TexasHoldEmPlayer whitePlayer)
        {
            var texasGameResult = new TexasGameResult();

            var blackPlayerHandCardLevel = blackPlayer.HandCards.GetHandCardsLevel();
            var whitePlayerHandCardLevel = whitePlayer.HandCards.GetHandCardsLevel();

            var compareResult = blackPlayerHandCardLevel.CompareTo(whitePlayerHandCardLevel);

            if (compareResult > 0)
            {
                texasGameResult.WinnerName = blackPlayer.Name;
                texasGameResult.WinLevel   = blackPlayerHandCardLevel.Name;
            }
            else if (compareResult < 0)
            {
                texasGameResult.WinnerName = whitePlayer.Name;
                texasGameResult.WinLevel   = whitePlayerHandCardLevel.Name;
            }
            else
            {
                texasGameResult = blackPlayerHandCardLevel.GetSameLevelCompareResult(blackPlayer, whitePlayer);
            }

            return(texasGameResult);
        }
 public void ReturnCompareResultGivenTwoReadyPlayersInSameLevelFullHouseCondition(
     TexasHoldEmPlayer blackPlayer,
     TexasHoldEmPlayer whitePlayer,
     TexasGameResult expectedGameResult)
 {
     GetCompareResult(blackPlayer, whitePlayer, expectedGameResult);
 }
        public TexasGameResult GetCompareResult(
            TexasHoldEmPlayer blackPlayer,
            TexasHoldEmPlayer whitePlayer)
        {
            var texasGameResult = new TexasGameResult {
                WinLevel = new HighCardLevel().Name
            };

            const int middleValueIndex = 2;

            var blackPlayerMiddleCard = blackPlayer.HandCards.Cards.ElementAtOrDefault(middleValueIndex);
            var whitePlayerMiddleCard = whitePlayer.HandCards.Cards.ElementAtOrDefault(middleValueIndex);

            if (blackPlayerMiddleCard != null && whitePlayerMiddleCard != null)
            {
                var compareResult = blackPlayerMiddleCard.CompareTo(whitePlayerMiddleCard);
                if (compareResult > 0)
                {
                    texasGameResult.WinnerName = blackPlayer.Name;
                    texasGameResult.WinCard    = blackPlayerMiddleCard.ToCardValueString();
                }
                else
                {
                    texasGameResult.WinnerName = whitePlayer.Name;
                    texasGameResult.WinCard    = whitePlayerMiddleCard.ToCardValueString();
                }
            }

            return(texasGameResult);
        }
        private static void GetCompareResult(TexasHoldEmPlayer blackPlayer, TexasHoldEmPlayer whitePlayer,
                                             TexasGameResult expectedGameResult)
        {
            var compareResult = TexasGameComparer.CompareHandCards(blackPlayer, whitePlayer);

            Assert.Equal(expectedGameResult.WinLevel, compareResult.WinLevel);
            Assert.Equal(expectedGameResult.WinCard, compareResult.WinCard);
            Assert.Equal(expectedGameResult.WinnerName, compareResult.WinnerName);
        }
예제 #6
0
        public ActionResult <TexasGameResult> GetGameResult(GameDataModel gameData)
        {
            var player1 = new TexasHoldEmPlayer(gameData.PlayerOneName);
            var player2 = new TexasHoldEmPlayer(gameData.PlayerTwoName);

            player1.HandCards = new HandCards(gameData.PlayerOneCards);
            player2.HandCards = new HandCards(gameData.PlayerTwoCards);

            return(TexasGameComparer.CompareHandCards(player1, player2));
        }
예제 #7
0
        public static void TexasGameRun()
        {
            // Initial Player and their hand cards
            var blackPlayer = new TexasHoldEmPlayer("Black");

            Console.WriteLine($"Please enter {blackPlayer.Name} player's cards: ");
            blackPlayer.HandCards = new HandCards(Console.ReadLine());

            var whitePlayer = new TexasHoldEmPlayer("White");

            Console.WriteLine($"Please enter {whitePlayer.Name} player's cards: ");
            whitePlayer.HandCards = new HandCards(Console.ReadLine());

            // Compare cards
            var texasGameResult = TexasGameComparer.CompareHandCards(blackPlayer, whitePlayer);

            TexasGameResultOutputter.GetConsoleOutput(texasGameResult);
        }
예제 #8
0
 public override TexasGameResult GetSameLevelCompareResult(TexasHoldEmPlayer blackPlayer,
                                                           TexasHoldEmPlayer whitePlayer)
 {
     return(new HighCardConditionComparer().GetCompareResult(blackPlayer, whitePlayer));
 }
 public abstract TexasGameResult GetSameLevelCompareResult(TexasHoldEmPlayer blackPlayer,
                                                           TexasHoldEmPlayer whitePlayer);