Exemplo n.º 1
0
        static bool PlayComputer(ref Player playerComputer, Card[] cards, ref int cardIndex, ref WinStatistic wins)
        {
            playerComputer.Hand = new Card[2];
            int aceWinCount = 0;

            for (int i = 0, j = cardIndex; i < 2; i++, cardIndex--)
            {
                playerComputer.Hand[i] = cards[cardIndex];
                if (cards[j].Face == Face.Ace)
                {
                    aceWinCount++;
                }
            }
            if (aceWinCount == 2)
            {
                ShowResults.ShowAceWinner(playerComputer);
                wins.ComputerWins++;
                return(false);
            }
            bool needMoreCards = true;

            while (needMoreCards)
            {
                var value  = DeckActions.CalculateHandValue(playerComputer.Hand);
                var choice = value < 17 ? "Yes" : "No";
                switch (choice)
                {
                case "Yes":
                    var newHand = new Card[playerComputer.Hand.Length + 1];
                    Array.Copy(playerComputer.Hand, newHand, playerComputer.Hand.Length);
                    newHand[playerComputer.Hand.Length] = cards[cardIndex];
                    playerComputer.Hand = newHand;
                    cardIndex--;
                    break;

                case "No":
                    needMoreCards = false;
                    break;
                }
                value = DeckActions.CalculateHandValue(playerComputer.Hand);
                if (value == 21)
                {
                    ShowResults.ShowBlackJackWinner(playerComputer);
                    needMoreCards = false;
                    wins.ComputerWins++;
                    return(false);
                }
                if (value > 21)
                {
                    needMoreCards = false;
                    return(true);
                }
            }
            return(true);
        }
Exemplo n.º 2
0
        public static Player CalculatePoints(Player human, Player computer)
        {
            var playerValue   = DeckActions.CalculateHandValue(human.Hand);
            var computerValue = DeckActions.CalculateHandValue(computer.Hand);

            if (playerValue < 21 && computerValue < 21)
            {
                return(playerValue > computerValue ? human : computer);
            }
            else if (playerValue < 21 && computerValue > 21)
            {
                return(human);
            }
            else if (playerValue > 21 && computerValue < 21)
            {
                return(computer);
            }
            else
            {
                return(playerValue < computerValue ? human : computer);
            }
        }
Exemplo n.º 3
0
        static bool PlayUser(ref Player playerHuman, Card[] cards, ref int cardIndex, int order, ref WinStatistic wins)
        {
            playerHuman.Hand = new Card[2];
            int aceWinCount = 0;

            for (int i = 0, j = cardIndex; i < 2; i++, cardIndex--)
            {
                playerHuman.Hand[i] = cards[cardIndex];
                if (cards[j].Face == Face.Ace)
                {
                    aceWinCount++;
                }
            }
            if (aceWinCount == 2)
            {
                ShowResults.ShowAceWinner(playerHuman);
                wins.PlayerWins++;
                return(false);
            }
            DeckActions.ShowPlayersHand(playerHuman.Hand);
            bool needMoreCards = true;

            while (needMoreCards)
            {
                Console.WriteLine("Do you want to take a card? Yes/No");
                var choice = Console.ReadLine();
                switch (choice)
                {
                case "Yes":
                    var newHand = new Card[playerHuman.Hand.Length + 1];
                    Array.Copy(playerHuman.Hand, newHand, playerHuman.Hand.Length);
                    newHand[playerHuman.Hand.Length] = cards[cardIndex];
                    playerHuman.Hand = newHand;
                    cardIndex--;
                    DeckActions.ShowPlayersHand(playerHuman.Hand);
                    break;

                case "No":
                    needMoreCards = false;
                    break;

                default:
                    Console.WriteLine("Invalid input");
                    continue;
                }
                var value = DeckActions.CalculateHandValue(playerHuman.Hand);
                if (value == 21)
                {
                    DeckActions.ShowPlayersHand(playerHuman.Hand);
                    ShowResults.ShowBlackJackWinner(playerHuman);
                    wins.PlayerWins++;
                    needMoreCards = false;
                    return(false);
                }
                if (value > 21)
                {
                    DeckActions.ShowPlayersHand(playerHuman.Hand);
                    Console.WriteLine("You can't take anymore cards cause you have more than 21 points...");
                    if (order != 2)
                    {
                        Console.WriteLine("Waiting for computer's turn...");
                    }
                    needMoreCards = false;
                    return(true);
                }
            }
            DeckActions.ShowPlayersHand(playerHuman.Hand);
            return(true);
        }