/// <summary>
        /// Calculate the Best Route
        /// </summary>
        /// <param name="mapPosition"></param>
        private void CalculateBestRoute(MapPosition mapPosition)
        {
            //Add value to Route
            RouteOption.Add(mapPosition.Value);

            //Load closer values
            MapPositionAroundValues mapPositionAroundValues = this.GetAroundValues(mapPosition);

            //Calculate next position
            MapPosition nextPosition = this.CalculateNextPosition(mapPositionAroundValues);

            //Validate next position
            if (nextPosition.Value > 0)
            {
                CalculateBestRoute(nextPosition);
            }
            else
            {
                RouteOptionList.Add(RouteOption);

                CompareRoutes();

                PrintBestRoute();
            }
        }