Esempio n. 1
0
        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;
                }
            }
        }