public void Process(ConsoleKeyInfo pressedButton) { switch (pressedButton.Key) { case ConsoleKey.UpArrow: worm.Clear(); worm.DX = 0; worm.DY = -1; worm.Draw(); wall.Draw(); break; case ConsoleKey.DownArrow: worm.Clear(); worm.DX = 0; worm.DY = 1; worm.Draw(); wall.Draw(); break; case ConsoleKey.LeftArrow: worm.Clear(); worm.DX = -1; worm.DY = 0; worm.Draw(); wall.Draw(); break; case ConsoleKey.RightArrow: worm.Clear(); worm.DX = 1; worm.DY = 0; worm.Draw(); wall.Draw(); break; case ConsoleKey.Escape: Environment.Exit(0); break; case ConsoleKey.F2: worm.Save(); food.Save(); break; case ConsoleKey.F1: worm = worm.Load() as Worm; food = food.Load() as Food; break; } }
public void Draw() { if (!gameOver) { worm.Draw(); food.Draw(); wall.Draw(); } }
static void Main(string[] args) { Console.SetWindowSize(50, 50); // размер консольного экрана Console.CursorVisible = false; // невидимость курсора Console.SetBufferSize(50, 50); // размер движка консольного экрана Food food = new Food(); // экзмепляр класса Food Wall wall = new Wall(); // экземпляр класса Wall Snake snake = new Snake(food, wall); //food?? // экземпляр класса Snake wall.Draw(); // функция, рисующая стенку food.Draw(); // функция, рисующая еду System.Timers.Timer timer = new System.Timers.Timer(100); timer.Elapsed += snake.Move; // сохраняет инфу о движении змейки timer.Start(); // начнет сохранение, поток (все это работает на подобии THread, который здесь был до этого) while (true) { ConsoleKeyInfo pressedButton = Console.ReadKey(); switch (pressedButton.Key) { case ConsoleKey.UpArrow: //при зажатии клавиши "Вверх" snake.Dy = -1; //когда змейка движется наверх на -1 уменьшается (14,13,12,11) snake.Dx = 0; break; case ConsoleKey.DownArrow: //при зажатии клавиши "Вниз" snake.Dy = 1; snake.Dx = 0; break; case ConsoleKey.LeftArrow: //при зажатии клавиши "Влево" snake.Dy = 0; snake.Dx = -1; break; case ConsoleKey.RightArrow: //при зажатии клавиши "Вправо" snake.Dy = 0; snake.Dx = 1; break; case ConsoleKey.Spacebar: snake.Save(); // сериализация break; case ConsoleKey.Tab: Console.Clear(); food.Draw(); wall.Draw(); timer.Stop(); timer.Elapsed -= snake.Move; // выкидывает старые сохраненные змейки snake = snake.Load(); // функция десериализации сохранненой змейки snake.SetFood(food); timer.Elapsed += snake.Move; // после выкидывания инфы о стархы змейках, создает новые потоки timer.Start(); break; } } }