예제 #1
0
        public bool Equals(DefaultNode <T> otherNode)
        {
            if (otherNode == null)
            {
                return(false);
            }

            return(Item.Equals(otherNode.Item));
        }
예제 #2
0
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }

            DefaultNode <T> otherNode = obj as DefaultNode <T>;

            if (otherNode == null)
            {
                return(false);
            }

            return(Item.Equals(otherNode.Item));
        }
예제 #3
0
파일: AStar.cs 프로젝트: Juhomatm/CivSim
        public static T[] FindPath <T>(
            T start,
            T destination,
            Func <T, T, double> getDistanceBetween,
            Func <T, IEnumerable <T> > getNeighbours)
        {
            DefaultNode <T> startingNode    = new DefaultNode <T>(start, destination, getNeighbours);
            DefaultNode <T> destinationNode = new DefaultNode <T>(destination, destination, getNeighbours);
            Func <DefaultNode <T>, DefaultNode <T>, double> totalDistanceSoFar = (n1, n2) => getDistanceBetween(n1.Item, n2.Item);
            Func <DefaultNode <T>, double> estimateToDestination = (n) => getDistanceBetween(n.Item, destination);

            Path <DefaultNode <T> > path = FindPath(startingNode, destinationNode, totalDistanceSoFar, estimateToDestination);

            if (path == null)
            {
                return(null);
            }
            return(path
                   .Select(n => n.Item)
                   .ToArray());
        }