/// <summary> /// /// Метод который реализует игровое поведение змеи /// /// </summary> /// <param name="culture"> Регион пользователя </param> /// <param name="resourceMenager"> Ресурсы для отображения сообщений пользователю </param> private static void GameProcess(WallController wallController, SnakeControllers snakeControllers, FoodController foodController, ResourceManager resourceMenager, CultureInfo culture) { while (!IsGameOver(wallController, snakeControllers)) { if (IsEatingSnake(snakeControllers, foodController)) { Point food = (Point)((ICreated)foodController).CreatedGameObject(); DrawGameObject(food); } else { MoveGameObject(snakeControllers); } Thread.Sleep(100); if (Console.KeyAvailable) { ConsoleKeyInfo key = Console.ReadKey(true); snakeControllers.HandleKey(key.Key); } } WriteGameOver(resourceMenager, culture); }
static void Main(string[] args) { #region ---=== Language ===--- CultureInfo culture = CultureInfo.CurrentCulture; ResourceManager resourceMenager = new ResourceManager("_13_05_2020_GameSnake_.Languages.Messages", typeof(Program).Assembly); #endregion #region ---=== Constant ===--- #endregion ConsoleKey exit; do { #region ---=== Controllers ===--- WallController wallController = new WallController(Console.WindowWidth - 20, Console.WindowHeight - 10); SnakeControllers snakeControllers = new SnakeControllers(); FoodController foodController = new FoodController(wallController); #endregion CratedGameObject(snakeControllers, foodController); DrawGameObject(wallController, snakeControllers, foodController); GameProcess(wallController, snakeControllers, foodController, resourceMenager, culture); exit = ProcessingPressKey(resourceMenager, culture); Console.Clear(); } while (!(exit == ConsoleKey.Escape || exit == ConsoleKey.N) && (exit == ConsoleKey.Y)); }
/// <summary> /// /// Игра продолжается до тех пор пока змейка /// не столкнется с сенкой или своим хвостом /// /// </summary> /// <param name="wall"> Сены на игровом поле </param> /// <param name="snake"> Змея на игровом поле </param> /// <returns></returns> private static bool IsGameOver(IHits wall, SnakeControllers snake) { return((wall).IsHit(snake.Snake) || (snake.IsHitTail())); }