예제 #1
0
        private static bool Update()
        {
            _snake.Direction = _input.GetNewDirection();
            var oldTail = _snake.Tail;

            _snake.Move();

            if (_snake.GetBody().Skip(1).Any(n => Equals(n, _snake.Head)))
            {
                return(true);
            }
            if (!_area.AllFields.Contains((_snake.Head.X, _snake.Head.Y)))
            {
                return(true);
            }

            if (IsPositionEqual(_snake.Head, _food))
            {
                _area.Score++;
                _area.PrintScore();
                _snake.Grow(oldTail);
                _food.SpawnNew(_area, _snake);
                _renderer.Redraw(_snake.Head);
            }
            else
            {
                _renderer.Redraw(_snake.Head, oldTail);
            }

            _renderer.Draw(_food);
            return(false);
        }