예제 #1
0
                                          new TimeSpan(0, 0, 0, 0, 200) }; // величина задержки между автоматическими падениями фигуры (миллисекунды)


        static void Main(string[] args)
        {
            MenuItem[] menu;

            BL.InitializeApplication(out menu);
            UI.Initialize(SCREEN_WIDTH, SCREEN_HEIGHT);
#if !DEBUG
            UI.ShowSplashScreen(SPLASH_SCREEN_DELAY);
#endif
            ConsoleColor[] shapeColors = { ConsoleColor.Black, ConsoleColor.Yellow, ConsoleColor.Green, ConsoleColor.Cyan, ConsoleColor.Blue, ConsoleColor.Magenta, ConsoleColor.DarkYellow, ConsoleColor.Red }; // цвета фигур

            Game game = BL.InitializeGame(FIELD_WIDTH, FIELD_HEIGHT, NEXT_SHAPE_FIELD_WIDTH, NEXT_SHAPE_FIELD_HEIGHT);

            GameView view = new GameView(GAME_FIELD_LEFT, GAME_FIELD_TOP, NEXT_SHAPE_FIELD_LEFT, NEXT_SHAPE_FIELD_TOP,
                                         SCORE_LEFT, SCORE_TOP, LEVEL_LEFT, LEVEL_TOP, shapeColors);

            GameMenu menuItemSelected;
            int      currentItem = 0;
            bool     gameOver    = false;

            do
            {
                menuItemSelected = UI.GetMenuSelection(menu, ref currentItem);

                switch (menuItemSelected)
                {
                case GameMenu.StartGame:
                    game     = BL.InitializeGame(FIELD_WIDTH, FIELD_HEIGHT, NEXT_SHAPE_FIELD_WIDTH, NEXT_SHAPE_FIELD_HEIGHT);
                    gameOver = PlayGame(ref game, view);
                    menu[(int)GameMenu.ResumeGame].Enabled = !gameOver;
                    if (gameOver)
                    {
                        UI.ShowGameOver(view, game);
                    }
                    else
                    {
                        currentItem = (int)GameMenu.ResumeGame;     // если игра не завершена, то переключаемся на пункт GameMenu.ResumeGame
                    }
                    break;

                case GameMenu.ResumeGame:
                    gameOver = PlayGame(ref game, view);
                    menu[(int)GameMenu.ResumeGame].Enabled = !gameOver;
                    if (gameOver)
                    {
                        currentItem = (int)GameMenu.StartGame;     // в завершённую игру запрещено возвращаться. переключаемся на пункт GameMenu.StartGame
                        UI.ShowGameOver(view, game);
                    }
                    break;

                case GameMenu.ShowHelp:
                    UI.ShowHelp();
                    break;

                case GameMenu.ShowCredits:
                    UI.ShowCredits();
                    break;

                default:
                    break;
                }
            } while (menuItemSelected != GameMenu.QuitApplication);
        }