Exemple #1
0
        public Entities.Path FindPath(Entities.Grid grid, Entities.GridLocation startPoint, Entities.GridLocation endPoint)
        {
            var result          = new ShortestPath.Optimization.Entities.Path();
            var currentLocation = result.Add(grid[startPoint.X, startPoint.Y]);

            currentLocation.DistanceFromStart = 0;

            while (!IsCurrentLocationTheEndPoint(currentLocation, endPoint))
            {
                var moveX = _random.Next(3) - 1;
                var moveY = _random.Next(3) - 1;
                if (moveX != 0 || moveY != 0)
                {
                    var newX = currentLocation.X + moveX;
                    var newY = currentLocation.Y + moveY;

                    if (grid.LocationIsTraversable(newX, newY))
                    {
                        var newLocation = grid[newX, newY];
                        newLocation.DistanceFromStart = currentLocation.DistanceFromStart + 1;
                        currentLocation = result.Add(newLocation);
                    }
                }
            }

            return(result);
        }
Exemple #2
0
        public Entities.Path FindPath(Entities.Grid grid, Entities.GridLocation startPoint, Entities.GridLocation endPoint)
        {
            var result = new ShortestPath.Optimization.Entities.Path();
            var currentLocation = result.Add(grid[startPoint.X, startPoint.Y]);
            currentLocation.DistanceFromStart = 0;

            while (!IsCurrentLocationTheEndPoint(currentLocation, endPoint))
            {
                var moveX = _random.Next(3) - 1;
                var moveY = _random.Next(3) - 1;
                if (moveX != 0 || moveY != 0)
                {
                    var newX = currentLocation.X + moveX;
                    var newY = currentLocation.Y + moveY;

                    if (grid.LocationIsTraversable(newX, newY))
                    {
                        var newLocation = grid[newX, newY];
                        newLocation.DistanceFromStart = currentLocation.DistanceFromStart + 1;
                        currentLocation = result.Add(newLocation);
                    }
                }
            }

            return result;
        }