当前位置: 首页>>代码示例>>C#>>正文


C# Path.cost方法代码示例

本文整理汇总了C#中Path.cost方法的典型用法代码示例。如果您正苦于以下问题:C# Path.cost方法的具体用法?C# Path.cost怎么用?C# Path.cost使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Path的用法示例。


在下文中一共展示了Path.cost方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: findPathsMaster

    private static List<Path> findPathsMaster(Unit actor, StageManager manager, Point target)
    {
        Point start = actor.tile.p;

        List<Path> discoveredPaths = new List<Path>();
        List<Path> unexploredPaths = new List<Path>();
        Path[] starterPaths = {
            new Path(start),
        };
        foreach (Path p in starterPaths) {
            discoveredPaths.Add(p);
            unexploredPaths.Add(p);
        }

        while(unexploredPaths.Count > 0) {
            // TODO - get a real priority queue in here...
            Path current = unexploredPaths[0];
            unexploredPaths.RemoveAt(0);

            Point destination = current.destination();
            Point[] neighbors = {
                new Point(destination.x-1, destination.y),
                new Point(destination.x+1, destination.y),
                new Point(destination.x, destination.y-1),
                new Point(destination.x, destination.y+1)
            };
            foreach(Point dest in neighbors) {
                Path newPath = new Path(current, dest);
                if (onMap(dest, manager) &&
                    newPath.cost(actor, manager) <= actor.stats.klass.Movement() &&
                    notSeen(start, discoveredPaths, dest)) {
                    if (newPath.destination().Equals(target)) {
                        List<Path> rtn = new List<Path>(1);
                        rtn.Add(newPath);
                        return rtn;
                    }
                    discoveredPaths.Add(newPath);
                    queueUp(actor, manager, unexploredPaths, newPath, target);
                }
            }
        }
        if (target != null) {
            return new List<Path>();
        }

        return discoveredPaths;
    }
开发者ID:indspenceable,项目名称:tbs-roguelike,代码行数:47,代码来源:Path.cs

示例2: totalCost

 private static int totalCost(Unit actor, StageManager manager, Path newPath, Point target)
 {
     Point dest = newPath.destination();
     int distanceCost = (int)Mathf.Sqrt((target.x - dest.x)*(target.x - dest.x) + (target.y - dest.y)*(target.y - dest.y));
     return distanceCost + newPath.cost(actor, manager);
 }
开发者ID:indspenceable,项目名称:tbs-roguelike,代码行数:6,代码来源:Path.cs

示例3: OnTileHovered

    public void OnTileHovered(Tile t)
    {
        // Are we on the current path?
        if (currentPath.contains(t.p)) {
            currentPath.TrimTo(t.p);
            RecalculateHighlights();
            return;
        }
        // Are we adjacent to a member of the current path?
        for (int i = currentPath.distance()-1; i >= 0; i-=1) {
            if (t.p.AdjacentTo(currentPath.at(i))) {
                Path copyPath = new Path(currentPath);
                copyPath.TrimTo(currentPath.at (i));
                Path newPath = new Path(copyPath, t.p);
                if (newPath.cost(actor, currentStage) <= actor.stats.klass.Movement()) {
                    currentPath = newPath;
                    RecalculateHighlights();
                    return;
                }
            }
        }

        // Are we pathable?
        if (destinationPoints.Contains(t.p)) {
            currentPath = Path.findPathForUnit(actor, currentStage, t.p);
        } else {
            // Default to no path, if we're not already set to that.
            currentPath = new Path(actor.tile.p);
        }
        RecalculateHighlights();
    }
开发者ID:indspenceable,项目名称:tbs-roguelike,代码行数:31,代码来源:Movement.cs


注:本文中的Path.cost方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。