예제 #1
0
파일: Program.cs 프로젝트: Abilis/Snake2
        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);
                }
            }          
        }
예제 #2
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;
                }
            }
        }