static void Main(string[] args) { Console.SetBufferSize(80, 25); //отрисовка рамки HorizontalLine upline = new HorizontalLine(0, 78, 0, '+'); upline.Drow(); HorizontalLine downline = new HorizontalLine(0, 78, 24, '+'); downline.Drow(); VerticalLine leftline = new VerticalLine(0, 0, 24, '+'); leftline.Drow(); VerticalLine rigthline = new VerticalLine(78, 0, 24, '+'); rigthline.Drow(); //отрисовка точек Point p1 = new Point(7, 18, '*'); Snake snake = new Snake(p1, 4, Direction.RIGTH); snake.Drow(); //генерация еды FoodCreator foodCreator = new FoodCreator(80, 25, '%'); Point food = foodCreator.CreateFood(); food.Draw(); //движение змейки while (true) { if (snake.Eat(food)) { food = foodCreator.CreateFood(); food.Draw(); } else { snake.Move(); } Thread.Sleep(120); if (Console.KeyAvailable) { ConsoleKeyInfo key = Console.ReadKey(); snake.Handle(key.Key); } } }
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; } } }