示例#1
0
        /// <summary>
        /// Grows up the snake.
        /// </summary>
        /// <param name="food">The food.</param>
        public void Eat(IFoodComponent food)
        {
            //put the new body part on the tail's place
            var newBodyPart = _bodyFactory.Create(null, GameComponentType.Body, Direction, Step, Step);

            newBodyPart.CurPosition  = Tail.CurPosition;
            newBodyPart.PrevPosition = Tail.PrevPosition;

            //step back tail
            Tail.CurPosition = Tail.PrevPosition;
            Tail.Direction   = GetDirestion(newBodyPart.CurPosition, Tail.CurPosition);

            //set direction for new food
            newBodyPart.Direction = Direction;

            //grow the snake
            SnakeBodyWithHead.Insert(SnakeBodyWithHead.Count - 1, newBodyPart);
            _body = null; // it will cause to recreate

            Field.PutOn(newBodyPart);
            OnEat?.Invoke(food);
        }