private static void PlayHighCard(LibraryInterfaces.IDeckOfCards deckOfCards)
        {
            var highCardGame = new HighCardGame(deckOfCards);

            //Ask for user input for number of players
            Console.WriteLine("Enter number of players not greater than 52:");
            int numPlayers = 0;

            if (!int.TryParse(Console.ReadLine(), out numPlayers) || numPlayers > CardGameLibrary.Constants.NCARDS)
            {
                Console.WriteLine("Number of players needs to be an integer lesser than 52.");
                return;
            }

            highCardGame.Play(numPlayers);

            foreach (var player in highCardGame.PlayerOfCardsInGame)
            {
                ConsoleWriteLinePlayerScore(player.PlayerNumber, false, player.PlayerScore, player.PlayerCards);
            }

            var winners = highCardGame.EvaluateWinners();

            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            sb.Append("Winners are ");
            foreach (var winner in winners)
            {
                sb.Append(winner + " ");
            }
            Console.WriteLine(sb);
        }
        //Assumption: BlackJack is usually played in casinos between the dealer and
        //5-7 users, hence, allowing max 7 players. Also, assuming  one hand per player
        private static void PlayBlackJack(CardGameLibrary.Interfaces.IDeckOfCards deckOfCards)
        {
            var blackJackGame = new BlackJackGame(deckOfCards);

            //Ask for user input for number of players
            Console.WriteLine("Enter number of players not greater than 7:");
            int numPlayers = 0;

            if (!int.TryParse(Console.ReadLine(), out numPlayers) || numPlayers > 7)
            {
                Console.WriteLine("Number of players needs to be an integer lesser than 7.");
                return;
            }

            blackJackGame.Play(numPlayers);
            foreach (var player in blackJackGame.PlayerOfCardsInGame)
            {
                if (!player.IsDealer)
                {
                    while (player.PlayerScore < 21 || (player.HasSoftScore && (player.PlayerScore - 10) < 21))
                    {
                        ConsoleWriteLinePlayerScore(player.PlayerNumber, player.HasSoftScore, player.PlayerScore, player.PlayerCards, true);

                        var toHitOrNotToHit = Console.ReadLine();
                        if (toHitOrNotToHit.Trim().ToUpper() == "Y")
                        {
                            blackJackGame.DealForPlayer(player.PlayerNumber);
                        }
                        else
                        {
                            break;
                        }
                    }

                    ConsoleWriteLinePlayerScore(player.PlayerNumber, player.HasSoftScore, player.PlayerScore, player.PlayerCards);
                }
                else
                {
                    while (player.PlayerScore < 17)
                    {
                        ConsoleWriteLineDealerScore(player.HasSoftScore, player.PlayerScore, player.PlayerCards);

                        blackJackGame.DealForPlayer(player.PlayerNumber);
                    }

                    ConsoleWriteLineDealerScore(player.HasSoftScore, player.PlayerScore, player.PlayerCards);
                }
            }

            var winners = blackJackGame.EvaluateWinners();
            var sb      = new System.Text.StringBuilder();

            sb.Append("Result of the game is as follows: \n");
            foreach (var winner in winners)
            {
                if (winner.whoWon == CardGameLibrary.DealerOrPlayerOrNone.Dealer)
                {
                    sb.Append("Dealer won against " + winner.playerNumber + ".\n");
                }
                else if (winner.whoWon == CardGameLibrary.DealerOrPlayerOrNone.Player)
                {
                    sb.Append("Player#" + winner.playerNumber + " won against dealer.\n");
                }
                else
                {
                    sb.Append("Player#" + winner.playerNumber + " and dealer reached a push; no one won.\n");
                }
            }
            Console.WriteLine(sb);
        }
Beispiel #3
0
 //Assumption: One set of 52 cards is being used in the deck of cards and not multiple
 public BlackJackGame(LibraryInterfaces.IDeckOfCards deckOfCards)
 {
     PlayerOfCardsInGame = new Generic.List <CardGameLibrary.PlayerOfCard>();
     _deckOfCards        = deckOfCards;
 }