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); } }