public void MenuSelect() { Console.Clear(); // Установка размера окна меню int width = 33; int height = 6; Console.SetWindowSize(width + 1, height + 1); Walls frame = new Walls(width, height, '*'); // Название игры и пункты меню TextItem title = new TextItem(1, 1, "~~~~~~~~~~~~ЗМЕЙКА~~~~~~~~~~~~".PadBoth(31)); // Передача пунктов в меню Menu menu = new Menu(new List <TextItem> { new TextItem(1, 2, "НАЧАТЬ ИГРУ".PadBoth(31)), new TextItem(1, 3, "НАСТРОЙКИ".PadBoth(31)), new TextItem(1, 4, "ВЫХОД".PadBoth(31)) }); // Цвета frame.SetColor(ConsoleColor.Black, ConsoleColor.Yellow); title.SetColor(ConsoleColor.DarkBlue, ConsoleColor.Green); menu.SetColor(ConsoleColor.DarkGreen, ConsoleColor.Green); // Отрисовка рамки вокруг меню frame.Draw(); // Показ названия и меню title.Show(); menu.Show(); // Индекс выбранного пункта int selected = menu.SelectItem(); switch (selected) { case 0: Game(); break; case 1: Settings(); break; case 2: Exit(); break; } }
public void Game() { // Символы поля и стен char fieldCh = ' '; char wallCh = '#'; // Установка размера окна игры int width = 55; int height = 15; Console.SetWindowSize(width + 1, height + 1); // Размеры поля и стен int columns = 30; int rows = 15; // Инициализация статистики Stats.Initialize(32, 10); Stats.Score = 0; Stats.Moves = 0; Stats.Speed = speed; Stats.Length = length; Stats.Show(); // Отрисовка поля и стен Field field = new Field(columns, rows, fieldCh); Walls walls = new Walls(columns, rows, wallCh); // Отрисовка змейки Point tail = new Point(1, 1, 'o'); Snake snake = new Snake(tail, Stats.Length, Direction.Right); // Еда FoodSpawner foodSpawner = new FoodSpawner(walls.Width, walls.Height, "♥♦♣♠"); foodSpawner.Initialize(); // Ускорение змейки в процентах double modifier = 5; // Установка цвета field.SetColor(ConsoleColor.DarkCyan, ConsoleColor.Cyan); walls.SetColor(ConsoleColor.Black, ConsoleColor.DarkGreen); snake.SetColor(ConsoleColor.DarkCyan, ConsoleColor.Green); FoodSpawner.Food.SetColor(ConsoleColor.DarkCyan, ConsoleColor.Red); // Отображение field.Draw(); walls.Draw(); snake.Draw(); FoodSpawner.Food.Draw(); // Движение змейки while (true) { // Выбор следующего направления snake.HandleKey(); // Условия смерти змейки if (snake.IsWallHit(walls.Width, walls.Height) || snake.IsTailHit()) { GameOver(); Thread.Sleep(2000); MenuSelect(); } // Змейка ест if (snake.Eat(FoodSpawner.Food)) { do { foodSpawner.Initialize(); } while (snake.IsHit(FoodSpawner.Food)); FoodSpawner.Food.Draw(); // Увеличение очков Stats.Score += 10; // Параллельное увеличение рекорда if (Stats.Score >= Stats.HighScore) { Stats.HighScore = Stats.Score; } // Увеличение длины Stats.Length++; Stats.Speed += Stats.Speed / 100 * modifier; } else { // Движение змейки snake.Move(); // Увеличение шагов Stats.Moves++; } // Показ статистики Stats.Show(); // Установка скорости Thread.Sleep(1000 / (int)Stats.Speed); } }