Пример #1
0
        static void DealHand()
        {
            if (deck.GetAmountOfRemainingCrads() < 20)
            {
                deck.Initialize();
                deck.Shuffle();
            }

            Console.WriteLine("Remaining Cards: {0}", deck.GetAmountOfRemainingCrads());
            Console.WriteLine("Current Chips: {0}", chips);
            Console.WriteLine("How much would you like to bet? (1 - {0})", chips);
            string input = Console.ReadLine().Trim().Replace(" ", "");
            int    betAmount;

            while (!Int32.TryParse(input, out betAmount) || betAmount < 1 || betAmount > chips)
            {
                Console.WriteLine("amount is illegal. How much would you like to bet? (1 - {0})", chips);
                input = Console.ReadLine().Trim().Replace(" ", "");
            }
            Console.WriteLine();

            userHand = new List <Card>();
            userHand.Add(deck.DrawACard());
            userHand.Add(deck.DrawACard());

            foreach (Card card in userHand)
            {
                if (card.Face == Face.Ace)
                {
                    card.Value += 10;
                    break;
                }
            }

            Console.WriteLine("[Player]");
            Console.WriteLine("Card 1: {0} of {1}", userHand[0].Face, userHand[0].Suit);
            Console.WriteLine("Card 2: {0} of {1}", userHand[1].Face, userHand[1].Suit);
            Console.WriteLine("Total: {0}\n", userHand[0].Value + userHand[1].Value);

            dealerHand = new List <Card>();
            dealerHand.Add(deck.DrawACard());
            dealerHand.Add(deck.DrawACard());

            foreach (Card card in dealerHand)
            {
                if (card.Face == Face.Ace)
                {
                    card.Value += 10;
                    break;
                }
            }

            Console.WriteLine("[Delaer]");
            Console.WriteLine("Card 1: {0} of {1}", dealerHand[0].Face, dealerHand[1].Suit);
            Console.WriteLine("Card 2: [Hole Card]");
            Console.WriteLine("Total: {0}\n", dealerHand[0].Value);

            bool insurance = false;;

            if (dealerHand[0].Face == Face.Ace)
            {
                Console.WriteLine("Insurance? (y / n)");
                string userInput = Console.ReadLine();

                while (userInput != "y" && userInput != "n")
                {
                    Console.WriteLine("Could not understand. Insurance? (y / n)");
                    userInput = Console.ReadLine();
                }

                if (userInput == "y")
                {
                    insurance = true;
                    //chips -= betAmount / 2;
                    Console.WriteLine("\n[Insurance Accepted!]\n");
                }
                else
                {
                    insurance = false;
                    Console.WriteLine("\n[Insurance Rejected]\n");
                }
            }

            if (dealerHand[0].Face == Face.Ace || dealerHand[0].Value == 10)
            {
                Console.WriteLine("Delaer checks if he has blackjack...\n");
                Thread.Sleep(2000);
                if (dealerHand[0].Value + dealerHand[1].Value == 21)
                {
                    Console.WriteLine("[Delaer]");
                    Console.WriteLine("Card 1: {0} of {1}", dealerHand[0].Face, dealerHand[1].Suit);
                    Console.WriteLine("Card 2: {0} of {1}", dealerHand[1].Face, dealerHand[1].Suit);
                    Console.WriteLine("Total: {0}\n", dealerHand[0].Value + dealerHand[1].Value);

                    Thread.Sleep(2000);

                    int amountLost = 0;

                    if (userHand[0].Value + userHand[1].Value == 21 && insurance)
                    {
                        amountLost = betAmount / 2;
                        chips     -= betAmount / 2;
                    }
                    else if (userHand[0].Value + userHand[1].Value != 21 && !insurance)
                    {
                        amountLost = betAmount + betAmount / 2;
                        chips     -= betAmount + betAmount / 2;
                    }

                    Console.WriteLine("You lost {0} chips", amountLost);

                    Thread.Sleep(1000);

                    return;
                }
                else
                {
                    Console.WriteLine("Dealer does not have a blackjack, moving on...\n");
                }
            }

            if (userHand[0].Value + userHand[1].Value == 21)
            {
                Console.WriteLine("Blackjack, You Won! ({0} chips)\n", betAmount + betAmount / 2);
                chips += betAmount + betAmount / 2;
                return;
            }

            do
            {
                Console.WriteLine("Please choose a valid option: [(S)tand (H)it]");
                ConsoleKeyInfo userOption = Console.ReadKey(true);
                while (userOption.Key != ConsoleKey.H && userOption.Key != ConsoleKey.S)
                {
                    Console.WriteLine("illegal key. Please choose a valid option: [(S)tand (H)it]");
                    userOption = Console.ReadKey(true);
                }
                Console.WriteLine();

                switch (userOption.Key)
                {
                case ConsoleKey.H:
                    userHand.Add(deck.DrawACard());
                    Console.WriteLine("Hitted {0} of {1}", userHand[userHand.Count - 1].Face, userHand[userHand.Count - 1].Suit);
                    int totalCardsValue = 0;
                    foreach (Card card in userHand)
                    {
                        totalCardsValue += card.Value;
                    }
                    Console.WriteLine("Total cards value now: {0}\n", totalCardsValue);
                    if (totalCardsValue > 21)
                    {
                        Console.Write("Busted!\n");
                        chips -= betAmount;
                        Thread.Sleep(2000);
                        return;
                    }
                    else if (totalCardsValue == 21)
                    {
                        Console.WriteLine("Good job! I assume you want to stand from now on...\n");
                        Thread.Sleep(2000);
                        continue;
                    }
                    else
                    {
                        continue;
                    }
                    break;

                case ConsoleKey.S:

                    Console.WriteLine("[Delaer]");
                    Console.WriteLine("Card 1: {0} of {1}", dealerHand[0].Face, dealerHand[1].Suit);
                    Console.WriteLine("Card 2: {0} of {1}", dealerHand[1].Face, dealerHand[1].Suit);

                    int dealerCardsValue = 0;
                    foreach (Card card in dealerHand)
                    {
                        dealerCardsValue += card.Value;
                    }

                    while (dealerCardsValue < 17)
                    {
                        Thread.Sleep(2000);
                        dealerHand.Add(deck.DrawACard());
                        dealerCardsValue = 0;
                        foreach (Card card in dealerHand)
                        {
                            dealerCardsValue += card.Value;
                        }
                        Console.WriteLine("Card {0}: {1} of {2}", dealerHand.Count, dealerHand[dealerHand.Count - 1].Face, dealerHand[dealerHand.Count - 1].Suit);
                    }
                    dealerCardsValue = 0;
                    foreach (Card card in dealerHand)
                    {
                        dealerCardsValue += card.Value;
                    }
                    Console.WriteLine("Total: {0}\n", dealerCardsValue);

                    if (dealerCardsValue > 21)
                    {
                        Console.WriteLine("Dealer bust! You win! ({0} chips)", betAmount);
                        chips += betAmount;
                        return;
                    }
                    else
                    {
                        int playerCardValue = 0;
                        foreach (Card card in userHand)
                        {
                            playerCardValue += card.Value;
                        }

                        if (dealerCardsValue > playerCardValue)
                        {
                            Console.WriteLine("Dealer has {0} and player has {1}, dealer wins!", dealerCardsValue, playerCardValue);
                            chips -= betAmount;
                            return;
                        }
                        else
                        {
                            Console.WriteLine("Player has {0} and dealer has {1}, player wins!", playerCardValue, dealerCardsValue);
                            chips += betAmount;
                            return;
                        }
                    }
                    break;

                default:
                    break;
                }

                Console.ReadLine();
            }while (true);
        }
Пример #2
0
            static void DealHand()
            {
                if (deck.GetAmountOfRemainingCards() < 8)
                {
                    deck.Play();
                    deck.Shuffle();
                }

                Console.WriteLine("Remaining Cards: {0}", deck.GetAmountOfRemainingCards());
                Console.WriteLine("Current Chips: {0}", chips);
                Console.WriteLine("How much would you like to bet? (1 - {0})", chips);
                string input = Console.ReadLine().Trim().Replace(" ", "");
                int    betAmount;

                while (!Int32.TryParse(input, out betAmount) || betAmount < 1 || betAmount > chips)
                {
                    Console.WriteLine("Illegal bet amount. How much would you like to bet? (1 - {0})", chips);
                    input = Console.ReadLine().Trim().Replace(" ", "");
                }
                Console.WriteLine();

                playerHand = new List <Card>();
                playerHand.Add(deck.DrawACard());
                playerHand.Add(deck.DrawACard());



                Console.WriteLine("[Players Hand]");
                Console.WriteLine("Card 1: {0} of {1}", playerHand[0].Face, playerHand[0].Suit);
                Console.WriteLine("Card 2: {0} of {1}", playerHand[1].Face, playerHand[1].Suit);

                foreach (Card card in playerHand)
                {
                    if (card.Face == Face.Ace)
                    {
                        Console.WriteLine("Is your Ace worth 1 or 11?");
                        string val = Console.ReadLine();

                        if (val == "1" || val == "11")
                        {
                            card.Value = Convert.ToInt32(val);
                            break;
                        }
                    }
                }
                Console.WriteLine("Total: {0}\n", playerHand[0].Value + playerHand[1].Value);

                dealerHand = new List <Card>();
                dealerHand.Add(deck.DrawACard());
                dealerHand.Add(deck.DrawACard());

                foreach (Card card in dealerHand)
                {
                    if (card.Face == Face.Ace)
                    {
                        card.Value += 10;
                        break;
                    }
                }

                Console.WriteLine("[Dealers Hand]");
                Console.WriteLine("Card 1: {0} of {1}", dealerHand[0].Face, dealerHand[1].Suit);
                Console.WriteLine("Card 2: [Hole Card]");
                Console.WriteLine("Total: {0}\n", dealerHand[0].Value);

                bool insurance = false;

                if (dealerHand[0].Face == Face.Ace)
                {
                    Console.WriteLine("Insurance? (y / n)");
                    string userInput = Console.ReadLine();

                    while (userInput != "y" && userInput != "n")
                    {
                        Console.WriteLine("I did not understand that. Insurance? (y / n)");
                        userInput = Console.ReadLine();
                    }

                    if (userInput == "y")
                    {
                        insurance = true;
                        //chips -= betAmount / 2;
                        Console.WriteLine("\n[Insurance Accepted]\n");
                    }
                    else
                    {
                        insurance = false;
                        Console.WriteLine("\n[Insurance Rejected]\n");
                    }
                }

                if (dealerHand[0].Face == Face.Ace || dealerHand[0].Value == 10)
                {
                    Console.WriteLine("Dealer checks for blackjack...\n");
                    Thread.Sleep(1500);
                    if (dealerHand[0].Value + dealerHand[1].Value == 21)
                    {
                        Console.WriteLine("[Dealers Hand]");
                        Console.WriteLine("Card 1: {0} of {1}", dealerHand[0].Face, dealerHand[1].Suit);
                        Console.WriteLine("Card 2: {0} of {1}", dealerHand[1].Face, dealerHand[1].Suit);
                        Console.WriteLine("Total: {0}\n", dealerHand[0].Value + dealerHand[1].Value);

                        Thread.Sleep(1500);

                        int amountLost = 0;

                        if (playerHand[0].Value + playerHand[1].Value == 21 && insurance)
                        {
                            amountLost = betAmount / 2;
                            chips     -= betAmount / 2;
                        }
                        else if (playerHand[0].Value + playerHand[1].Value != 21 && !insurance)
                        {
                            amountLost = betAmount + betAmount / 2;
                            chips     -= betAmount + betAmount / 2;
                        }

                        Console.WriteLine("You lost {0} chips.", amountLost);
                        Thread.Sleep(1500);
                        return;
                    }
                    else
                    {
                        Console.WriteLine("Dealer does not have a blackjack.\n");
                    }
                }

                if (playerHand[0].Value + playerHand[1].Value == 21)
                {
                    Console.WriteLine("Blackjack, You Won ({0} chips.)\n", betAmount + betAmount / 2);
                    chips += betAmount + betAmount / 2;
                    return;
                }

                do
                {
                    Console.WriteLine("[(S)tand (H)it]");
                    ConsoleKeyInfo userOption = Console.ReadKey(true);
                    while (userOption.Key != ConsoleKey.H && userOption.Key != ConsoleKey.S)
                    {
                        Console.WriteLine("Illegal choice. [(S)tand (H)it]");
                        userOption = Console.ReadKey(true);
                    }
                    Console.WriteLine();

                    switch (userOption.Key)
                    {
                    case ConsoleKey.H:
                        Console.WriteLine("Card 1: {0} of {1}", playerHand[0].Face, playerHand[0].Suit);
                        Console.WriteLine("Card 2: {0} of {1}", playerHand[1].Face, playerHand[1].Suit);
                        playerHand.Add(deck.DrawACard());
                        int totalCardsValue = 0;
                        foreach (Card card in playerHand)
                        {
                            totalCardsValue += card.Value;
                        }
                        Console.WriteLine("Card {0}: {1} of {2}", playerHand.Count, playerHand[playerHand.Count - 1].Face, playerHand[playerHand.Count - 1].Suit);
                        Console.WriteLine("Total: {0}\n", totalCardsValue);

                        if (totalCardsValue > 21)
                        {
                            if (playerHand[0].Value == 11)
                            {
                                playerHand[0].Value = 1;
                            }
                            else if (playerHand[1].Value == 11)
                            {
                                playerHand[1].Value = 1;
                            }
                            else if (playerHand[2].Value == 11)
                            {
                                playerHand[2].Value = 1;
                            }
                            else
                            {
                                Console.Write("Busted\n");
                                chips -= betAmount;
                                Thread.Sleep(1500);
                                return;
                            }
                            continue;
                        }

                        else if (totalCardsValue == 21)
                        {
                            Console.WriteLine("21, You should stand....\n");
                            Thread.Sleep(1500);
                            continue;
                        }
                        else
                        {
                            continue;
                        }

                    case ConsoleKey.S:

                        Console.WriteLine("[Dealers Hand]");
                        Console.WriteLine("Card 1: {0} of {1}", dealerHand[0].Face, dealerHand[1].Suit);
                        Console.WriteLine("Card 2: {0} of {1}", dealerHand[1].Face, dealerHand[1].Suit);

                        int dealerCardsValue = 0;
                        foreach (Card card in dealerHand)
                        {
                            dealerCardsValue += card.Value;
                        }

                        while (dealerCardsValue < 17)
                        {
                            Thread.Sleep(1500);
                            dealerHand.Add(deck.DrawACard());
                            dealerCardsValue = 0;
                            foreach (Card card in dealerHand)
                            {
                                dealerCardsValue += card.Value;
                            }
                            Console.WriteLine("Card {0}: {1} of {2}", dealerHand.Count, dealerHand[dealerHand.Count - 1].Face, dealerHand[dealerHand.Count - 1].Suit);
                        }

                        dealerCardsValue = 0;
                        foreach (Card card in dealerHand)
                        {
                            dealerCardsValue += card.Value;
                        }
                        Console.WriteLine("Total: {0}\n", dealerCardsValue);

                        if (dealerCardsValue > 21)
                        {
                            Console.WriteLine("Dealer busts! You win {0} chips.", betAmount);
                            chips += betAmount;
                            return;
                        }
                        else
                        {
                            int playerCardsValue = 0;
                            foreach (Card card in playerHand)
                            {
                                playerCardsValue += card.Value;
                            }

                            if (dealerCardsValue > playerCardsValue)
                            {
                                Console.WriteLine("Players hand {0}   Dealers hand {1}    You lose {2} chips!", playerCardsValue, dealerCardsValue, betAmount);
                                chips -= betAmount;
                                return;
                            }
                            else if (playerCardsValue > dealerCardsValue)
                            {
                                Console.WriteLine("Players hand {0}     Dealers hand {1}    You win {2} chips!", playerCardsValue, dealerCardsValue, betAmount);
                                chips += betAmount;
                                return;
                            }
                            else
                            {
                                Console.WriteLine("Players hand {0}     Dealers hand {1}    Push! You neither win nor lose!!", playerCardsValue, dealerCardsValue);
                                return;
                            }
                        }

                    default:
                        break;
                    }

                    Console.ReadLine();
                }while (true);
            }