コード例 #1
0
        static void Main(string[] args)
        {
            //intro
            Console.WriteLine("Welcome to Blackjack where the goal is to get as close to 21 as possible.");
            Console.WriteLine("This game is meant to help teach basic stradegy");
            Console.WriteLine("If a bad/ weird move is made it will tell you the recommended play");
            Console.WriteLine("Good Luck and Have fun learning how to play Blackjack");
            Console.WriteLine();
            string response;              //stops game if false
            Player player = new Player(); //create player

            Console.WriteLine("You will start off with {0} chips", player.ChipTotal);

            //player is sitting at table until he wants to end the session
            do
            {
                //create dealer and hand
                response = "";
                player.Bet();
                Hand H1 = new Hand();
                player.AddHand(H1);
                Dealer dealer = new Dealer();

                //dealer BlackJack
                if (dealer.BlackKJackCheck())
                {
                    player.Lose();
                    player.RemoveHands();// adjust player back to no hands and ends the round
                    if (MoneyCheck(player.ChipTotal))
                    {
                        break;
                    }
                    response = EndGameCheck();
                    continue;
                }

                for (int i = 0; i < player.handCount; i++) //iterate throught player hands
                {
                    if (i > 0)
                    {
                        Console.WriteLine("Your second hand has {0}", player.hands[i].GetPlayerHandSum());
                    }

                    //Player BlackJack
                    if (player.hands[i].BlackJackCheck())
                    {
                        player.BlackJack(i + 1);
                        if (player.handCount == 1 || (player.handCount == 2 && i == 1 && player.hands[0].BlackJackCheck() && player.hands[1].BlackJackCheck()))
                        {
                            Console.WriteLine("You have {0} chips left", player.ChipTotal);
                            response = EndGameCheck();
                            continue;
                        }
                        else
                        {
                            continue;
                        }
                    }
                    string handNum = "";
                    if (player.handCount > 1)
                    {
                        if (i == 0)
                        {
                            handNum = "First hand ... ";
                        }
                        else if (i == 1)
                        {
                            handNum = "Second hand ... ";
                        }
                    }
                    if (player.handCount > 1)
                    {
                        Console.WriteLine("{0}You can hit, double, split, stay", handNum);
                    }
                    else
                    {
                        Console.WriteLine("You can hit, double, split, stay, surrender");
                    }
                    string action = Console.ReadLine();
                    Stradegy(player.hands[i].GetPlayerHandSum(), dealer.card2, action, player.hands[i].SoftCheck(), player.hands[i].CheckSplit());
                    player.hands[i].Action(action);
                    if (action == "surrender")
                    {
                        player.Surrender();
                        Console.WriteLine("You have {0} chips left", player.ChipTotal);
                        response = EndGameCheck();
                        continue;
                    }

                    //split hand
                    if (action == "split")
                    {
                        Hand H2 = player.hands[i].Split(player.hands[i].CheckSplit());
                        player.AddHand(H2);
                        i--;
                        continue;
                    }

                    //double bet
                    if (action == "double")
                    {
                        player.DoubleBet(i + 1);
                    }

                    //if player bust exit / continue
                    if (player.handCount > 1 && player.hands[i].GetPlayerHandSum() == 0)
                    {
                        if (i == 0)
                        {
                            continue;
                        }
                        else if (i == 1)
                        {
                            break;
                        }
                    }
                    else if (player.hands[i].GetPlayerHandSum() == 0)
                    {
                        player.Lose();
                        Console.WriteLine("You have {0} chips left", player.ChipTotal);
                        response = EndGameCheck();
                        continue;
                    }
                }

                // check to see if dealer needs to play
                if (response == "")
                {
                    Console.WriteLine();
                    Console.WriteLine("The dealer was hiding a {0}", dealer.card1);
                    Console.WriteLine("The dealer has {0}", dealer.GetDealerHandSum());
                    dealer.Hit();
                    Console.WriteLine();
                    // compare dealer and player hands
                    for (int i = 0; i < player.handCount; i++)
                    {
                        if (dealer.GetDealerHandSum() > player.hands[i].GetPlayerHandSum())
                        {
                            player.Lose(i + 1);
                        }
                        else if (dealer.GetDealerHandSum() < player.hands[i].GetPlayerHandSum())
                        {
                            player.Win(i + 1);
                        }
                        else
                        {
                            player.Draw(i + 1);
                        }
                    }

                    // player chips
                    if (MoneyCheck(player.ChipTotal))
                    {
                        break;
                    }
                    response = EndGameCheck();
                }
                player.RemoveHands();// adjust player back to no hands and ends the round
            }while (response == "yes");
        }