示例#1
0
        public bool TryMoveTurtle(Turtle turtle, int maxPositionX, int maxPositionY)
        {
            var currentPositionX = turtle.CurrentPositionX;
            var currentPositionY = turtle.CurrentPositionY;

            switch (turtle.CurrentDirection)
            {
            case DirectionType.N:
                currentPositionY--;
                break;

            case DirectionType.E:
                currentPositionX++;
                break;

            case DirectionType.S:
                currentPositionY++;
                break;

            case DirectionType.W:
                currentPositionX--;
                break;

            default:
                throw new NotImplementedException();
            }
            if (currentPositionX > maxPositionX ||
                currentPositionX < 0 ||
                currentPositionY > maxPositionY ||
                currentPositionY < 0)
            {
                // Turtle keeps hitting a wall untill it changes direction,
                // otherwise we can introduce a new exception for this case
                return(false);
            }
            else
            {
                _turtleFactory.UpdatePosition(turtle, currentPositionX, currentPositionY);
                return(true);
            }
        }