コード例 #1
0
        private static void NewGame()
        {
            Console.Clear();

            Score score = new Score();

            score.Show();

            Frame frame = new Frame(Config.FIELD_WIDTH, Config.FIELD_HEIGHT);

            frame.Draw();

            Point position = new Point(Config.SNAKE_START_POSITION_X, Config.SNAKE_START_POSITION_Y, Config.SYMBOL_SNAKE);
            Snake snake    = new Snake(position, Config.SNAKE_START_LENGTH, Config.SNAKE_START_DIRECTION);

            snake.Draw();

            Food food = new Food();

            food.GenerateFood(snake);
            food.Draw();

            while (true)
            {
                if (snake.hannibal() || snake.bump(frame))
                {
                    Console.SetCursorPosition(0, Config.FIELD_HEIGHT - 1);
                    GameOver(score.result);
                    break;
                }

                if (snake.eat(food))
                {
                    food.GenerateFood(snake);
                    food.Draw();
                    score.Inc();
                    score.Show();
                }
                else
                {
                    snake.Move();
                }

                if (Console.KeyAvailable)
                {
                    ConsoleKeyInfo key = Console.ReadKey(true);
                    if (snake.HandleKey(key.Key))
                    {
                        Score.ShowPause();
                        key = Console.ReadKey(true);
                        snake.HandleKey(key.Key);
                        Score.HidePause();
                    }
                }
                Thread.Sleep(Config.REFRESH_SPEED);
            }
        }
コード例 #2
0
 public Boolean Eat(ref Food Object, Graphics Target, int pX, int pY)  //If First element of the Snake meets food element
 {
     if (Body[Lenght - 1].X == Object.X && Body[Lenght - 1].Y == Object.Y)
     {
         Piece Another = new Piece(Body[Lenght - 1].X + pX, Body[Lenght - 1].Y + pY);
         AddSegment(Another);
         Another.PointParametersChange(Target, blackPen, 0, 0);
         Object.GenerateFood();
         Object.PointParametersChange(Target, redPen, 0, 0);
         return(true);
     }
     return(false);
 }
コード例 #3
0
        public void NewGame()   //Starting new game
        {
            GameOver = false;
            Score    = 0;
            _Speed   = 0;
            _Level   = 1;
            Piece First = new Piece(13, 13);
            Piece Last  = new Piece(23, 13);

            Body.AddSegment(First);
            Body.AddSegment(Last);
            Food.GenerateFood();
            Food.PointParametersChange(_Target, redPen, 0, 0);
        }
コード例 #4
0
        // Проверка позиции змейки на столкновение. Возварщает true если не произошло столкновения со стеной, false если змейка столкнулась со стеной
        public bool CheckPosition()
        {
            bool cont = true;

            if (HasSamePosition(snake.Points[0], food.Points[0]))  // Если змейка сталкивается с едой - увеличть змейка и переместить еду
            {
                snake.Points.Add(new Point(snake.Points[0].sign, snake.Points[snake.Points.Count - 1].X, snake.Points[snake.Points.Count - 1].Y));
                food.GenerateFood(new List <Objects> {
                    snake, walls
                });
                IntFace.PointsUp(walls.LevelName);                                                 // Увеличить количество очков на 1
            }
            else if (CollidesWith(snake.Points[0], walls) || CollidesWith(snake.Points[0], snake)) // Если змейка сталкивается с едой, то вывести "Конец игры"
            {
                snake.Death();
                IntFace.GameOver();
                Stop();
                cont = false;
            }
            return(cont);
        }