Пример #1
0
        public static void StartCasino()                                                                                                                        // starts the main casino menu where choose where to play at the casino also used for main game loop
        {
            Control = string.Empty;                                                                                                                             // initialize a control string
            string[] mainMenuItems      = new string[] { "Black Jack", "Quit" };                                                                                // first menu for the game
            string[] afterGameMenuItems = new string[] { "Play Again", "To Main" };                                                                             // after loosing everything ask if play again
            string[] inGameMenuItems    = new string[] { "Hit", "Stand", "Surrender" };                                                                         // in the black jack choices of play
            string[] bettingMenuItems   = new string[] { "Bet $1", "Bet $5", "Bet $10", "Bet $20", "Bet $50", "Bet $100", "Bet $200", "Bet $300", "Bet Item" }; // what sum to bet for the deal
            string[] itemsToBet         = new string[] { "Wife", "Car", "House", "Watch", "Shirt", "Pants", "Shoose" };                                         // if no money you can bet some things from the inventory
            Menu     mainMenu           = new Menu(mainMenuItems, Draw.menuFrame, new Style(ConsoleColor.White, ConsoleColor.Black));
            Menu     bettingMenu        = new Menu(bettingMenuItems, Draw.gameMenu, new Style(ConsoleColor.White, ConsoleColor.Black));
            Menu     inGameMenu         = new Menu(inGameMenuItems, Draw.gameMenu, new Style(ConsoleColor.White, ConsoleColor.Black));
            Menu     afterGameMenu      = new Menu(afterGameMenuItems, Draw.gameMenu, new Style(ConsoleColor.White, ConsoleColor.Black));
            Menu     itemsBetMenu       = new Menu(itemsToBet, Draw.gameMenu, new Style(ConsoleColor.White, ConsoleColor.Black));

            currentMenu = mainMenu;
            MainGUI(); // start the main GUI interface
            // TODO: make player dealer, stats, money - create new objects first make invenory, generate deck
            BJPlayer = new BlackJackPlayer("Pesho", Gender.Male, 1000);
            BJDealer = new BlackJackDealer(new CardsDeck());
            Status stats = new Status(BJPlayer);

            Draw.DrawMenu(currentMenu); // get control string from first main menu
            Control = currentMenu.CheckInput();
            BJPlayer.Subscribe(BJDealer);
            while (true) // main game loop
            {
                bool inGame = Control != "Quit";
                if (!inGame)
                {
                    break; // if control gets "Quit" this brakes the main loop
                }

                if (Control != null)
                {
                    if (Control.Contains("Bet"))
                    {
                        string bet   = Control.Substring(Control.IndexOf("$") + 1);
                        int    wager = int.Parse(bet);
                        Control = PlaceBet(wager, BJPlayer, BJDealer, inGame);
                    }
                    else
                    {
                        switch (Control) // get controle string value and performe tasks depending on the control
                        {
                        case "Black Jack":
                        {
                            currentMenu.Position = 0;
                            currentMenu          = bettingMenu;
                            BlackJackTable();           // draw the main game screen
                            Draw.DrawMenu(currentMenu); // get control string from first main menu
                            Control = currentMenu.CheckInput();
                            break;
                        }

                        case "Bet Item":
                        {
                            currentMenu.Position = 0;
                            currentMenu          = itemsBetMenu;
                            Draw.ClearFrame(currentMenu.MenuFrame, new Style(ConsoleColor.Black, ConsoleColor.Black));
                            Draw.DrawMenu(currentMenu);         // get control string from first main menu
                            Control = currentMenu.CheckInput();
                            break;
                        }

                        case "Hit":
                        {
                            BJDealer.DealCardToPlayer(BJPlayer);
                            if (BJPlayer.CountScore() > 21)
                            {
                                Control = "Dealer win";
                            }
                            else if (BJPlayer.CountScore() == 21)
                            {
                                if (BJPlayer.Hand.Count() == 2)
                                {
                                    BJPlayer.GetBlackJack();
                                }
                                BJDealer.DealCardHimself(true, BJPlayer.CountScore());
                                Control = BJDealer.CheckScore(BJPlayer);
                            }
                            else
                            {
                                Control = currentMenu.CheckInput();
                            }
                            break;
                        }

                        case "Stand":
                        {
                            BJDealer.DealCardHimself(true, BJPlayer.CountScore());
                            Control = BJDealer.CheckScore(BJPlayer);
                            break;
                        }

                        case "Surrender":
                        {
                            BJDealer.HandleMoney(BJDealer.Wager / 2, BJPlayer);
                            currentMenu = afterGameMenu;
                            Draw.ClearFrame(currentMenu.MenuFrame, new Style(ConsoleColor.White, ConsoleColor.Black));
                            Draw.ClearFrame(Draw.statusDisplay, new Style(ConsoleColor.White, ConsoleColor.Black));
                            Draw.DrawTextInFrame(new string[] { "Money:" + BJPlayer.Money }, Draw.statusDisplay, new Style(ConsoleColor.White, ConsoleColor.Black));
                            Draw.DrawMenu(currentMenu);
                            BJPlayer.ClearHand();
                            BJDealer.ClearHand();
                            Control = currentMenu.CheckInput();
                            break;
                        }

                        case "Player win":
                        {
                            currentMenu.Position = 0;
                            currentMenu          = afterGameMenu;
                            Draw.ClearFrame(currentMenu.MenuFrame, new Style(ConsoleColor.White, ConsoleColor.Black));
                            Draw.ClearFrame(Draw.statusDisplay, new Style(ConsoleColor.White, ConsoleColor.Black));
                            Draw.DrawTextInFrame(new string[] { "Money:" + BJPlayer.Money }, Draw.statusDisplay, new Style(ConsoleColor.White, ConsoleColor.Black));
                            Draw.DrawMenu(currentMenu);
                            BJPlayer.ClearHand();
                            BJDealer.ClearHand();
                            Draw.DrawTextInFrame(Draw.youWon, Draw.table, new Style(ConsoleColor.Red, ConsoleColor.Black));
                            Control = currentMenu.CheckInput();
                            break;
                        }

                        case "Dealer win":
                        {
                            currentMenu.Position = 0;
                            currentMenu          = afterGameMenu;
                            Draw.ClearFrame(currentMenu.MenuFrame, new Style(ConsoleColor.White, ConsoleColor.Black));
                            Draw.ClearFrame(Draw.statusDisplay, new Style(ConsoleColor.White, ConsoleColor.Black));
                            Draw.DrawTextInFrame(new string[] { "Money:" + BJPlayer.Money }, Draw.statusDisplay, new Style(ConsoleColor.White, ConsoleColor.Black));
                            Draw.DrawMenu(currentMenu);
                            BJPlayer.ClearHand();
                            BJDealer.ClearHand();
                            Draw.DrawTextInFrame(Draw.youLoose, Draw.table, new Style(ConsoleColor.Red, ConsoleColor.Black));
                            Control = currentMenu.CheckInput();
                            break;
                        }

                        case "Push":
                        {
                            currentMenu.Position = 0;
                            currentMenu          = afterGameMenu;
                            Draw.ClearFrame(currentMenu.MenuFrame, new Style(ConsoleColor.White, ConsoleColor.Black));
                            Draw.ClearFrame(Draw.statusDisplay, new Style(ConsoleColor.White, ConsoleColor.Black));
                            Draw.DrawTextInFrame(new string[] { "Money:" + BJPlayer.Money }, Draw.statusDisplay, new Style(ConsoleColor.White, ConsoleColor.Black));
                            Draw.DrawMenu(currentMenu);
                            BJPlayer.ClearHand();
                            BJDealer.ClearHand();
                            Draw.DrawTextInFrame(Draw.youPush, Draw.table, new Style(ConsoleColor.Red, ConsoleColor.Black));
                            Control = currentMenu.CheckInput();
                            break;
                        }

                        case "Play Again":
                        {
                            currentMenu          = bettingMenu;
                            currentMenu.Position = 0;
                            Draw.ClearFrame(Draw.betBox, new Style(ConsoleColor.White, ConsoleColor.Black));
                            Draw.ClearFrame(currentMenu.MenuFrame, new Style(ConsoleColor.White, ConsoleColor.Black));
                            Draw.DrawMenu(currentMenu);
                            Draw.ClearFrame(Draw.dealerCardsFrame, new Style(ConsoleColor.White, ConsoleColor.Black));
                            Draw.ClearFrame(Draw.plyerCardsFrame, new Style(ConsoleColor.White, ConsoleColor.Black));
                            Control = currentMenu.CheckInput();
                            break;
                        }

                        case "To Main":
                        {
                            Console.Clear();
                            StartCasino();
                            break;
                        }

                        default:
                            Console.Clear();
                            StartCasino();
                            break;
                        }
                    }
                }
            }
            Environment.Exit(0);
        }