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


C# TileMap.TopNeighbor方法代码示例

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


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

示例1: FindHelper

    public static void FindHelper(TileMap tileMap, Tile sourceTile, int movement, int jumpHeight, Dictionary<Tile, int> tileToMaxMovement,
	                              bool moveThroughOccupiedTiles)
    {
        if (!tileToMaxMovement.ContainsKey(sourceTile)) {
            tileToMaxMovement[sourceTile] = movement;
        } else {
            int maxMove = tileToMaxMovement[sourceTile];
            if (movement > maxMove) {
                tileToMaxMovement[sourceTile] = movement;
            } else {
                return;
            }
        }
        //if (visited.Contains(sourceTile)) {
        //	return;
        //}
        //visited.Add(sourceTile);
        movement = movement - sourceTile.GetMovementCost();
        if (movement <= 0) {
            return;
        }
        if (IsTraversable(tileMap.BottomNeighbor(sourceTile), moveThroughOccupiedTiles)) {
            FindHelper(tileMap, tileMap.BottomNeighbor(sourceTile), movement, jumpHeight, tileToMaxMovement, moveThroughOccupiedTiles);
        }
        if (IsTraversable(tileMap.TopNeighbor(sourceTile), moveThroughOccupiedTiles)) {
            FindHelper(tileMap, tileMap.TopNeighbor(sourceTile), movement, jumpHeight, tileToMaxMovement, moveThroughOccupiedTiles);
        }
        if (IsTraversable(tileMap.LeftNeighbor(sourceTile), moveThroughOccupiedTiles)) {
            FindHelper(tileMap, tileMap.LeftNeighbor(sourceTile), movement, jumpHeight, tileToMaxMovement, moveThroughOccupiedTiles);
        }
        if (IsTraversable(tileMap.RightNeighbor(sourceTile), moveThroughOccupiedTiles)) {
            FindHelper(tileMap, tileMap.RightNeighbor(sourceTile), movement, jumpHeight, tileToMaxMovement, moveThroughOccupiedTiles);
        }
    }
开发者ID:Shnagenburg,项目名称:TacticsGame,代码行数:34,代码来源:FindTilesWithinRange.cs

示例2: FindHelper

 public static void FindHelper(TileMap tileMap, TileData sourceTile, int movement, FindTilesWithinRangeDTO dto)
 {
     if (!dto.TileToMaxMovement.ContainsKey(sourceTile)) {
         dto.TileToMaxMovement[sourceTile] = movement;
     } else {
         int maxMove = dto.TileToMaxMovement[sourceTile];
         if (movement > maxMove) {
             dto.TileToMaxMovement[sourceTile] = movement;
         } else {
             return;
         }
     }
     //if (visited.Contains(sourceTile)) {
     //	return;
     //}
     //visited.Add(sourceTile);
     movement = movement - sourceTile.MovementCost;
     if (movement <= 0) {
         return;
     }
     if (IsTraversable(tileMap.BottomNeighbor(sourceTile), dto)) {
         FindHelper(tileMap, tileMap.BottomNeighbor(sourceTile), movement, dto);
     }
     if (IsTraversable(tileMap.TopNeighbor(sourceTile), dto)) {
         FindHelper(tileMap, tileMap.TopNeighbor(sourceTile), movement, dto);
     }
     if (IsTraversable(tileMap.LeftNeighbor(sourceTile), dto)) {
         FindHelper(tileMap, tileMap.LeftNeighbor(sourceTile), movement, dto);
     }
     if (IsTraversable(tileMap.RightNeighbor(sourceTile), dto)) {
         FindHelper(tileMap, tileMap.RightNeighbor(sourceTile), movement, dto);
     }
 }
开发者ID:Shnagenburg,项目名称:TacticsGame,代码行数:33,代码来源:FindTilesWithinRangeThreadsafe.cs

示例3: Find

    public static List<TileData> Find(TileMap tileMap, TileData sourceTile, TileData destinationTile, int moveThroughMask)
    {
        List<TileData> shortestPath = new List<TileData>();
        List<TileData> unvisited = new List<TileData>(tileMap.TileDataList);

        FindShorestPathDTO dto = new FindShorestPathDTO();
        dto.Destination = destinationTile;
        dto.MoveThroughMask = moveThroughMask;
        if (moveThroughMask != TeamId.MOVE_THROUGH_ALL) {
            unvisited = TileUtility.FilterOutOccupiedTiles(unvisited, moveThroughMask); // TODO support enemyteam
            unvisited.Add(sourceTile);
        }

        dto.TileToDistance.Add(sourceTile, 0);
        TileData currentTile = null;
        int count = 0;
        while (unvisited.Count > 0 && count < 100) {
            count++;
            currentTile = TileWithMinDistance(dto.TileToDistance, unvisited);
            unvisited.Remove(currentTile);
            CalculateDistanceAndUpdatePath(currentTile, tileMap.TopNeighbor(currentTile), dto);
            CalculateDistanceAndUpdatePath(currentTile, tileMap.BottomNeighbor(currentTile), dto);
            CalculateDistanceAndUpdatePath(currentTile, tileMap.LeftNeighbor(currentTile), dto);
            CalculateDistanceAndUpdatePath(currentTile, tileMap.RightNeighbor(currentTile), dto);
        }

        Debug.Log("starting return path - " + count);

        TileData returnTile = destinationTile;
        shortestPath.Add(returnTile);
        count = 0;
        while (returnTile != sourceTile && count < 100) {
            count++;
            Debug.Log("finding last hop for " + returnTile.ToString());
            try {
            returnTile = dto.TileToOptimalPrevious[returnTile];
            } catch (Exception ex) {
                Debug.LogError(ex);
                Debug.LogError("oh shit error couldn't find " + returnTile.ToString());
            }
            Debug.Log("found " + returnTile);
            shortestPath.Add(returnTile);
        }
        Debug.Log("finish return path - TILEDATA");
        shortestPath.Reverse();
        return shortestPath;
    }
开发者ID:Shnagenburg,项目名称:TacticsGame,代码行数:47,代码来源:FindShortestPathThreadsafe.cs

示例4: Find

    public static List<Tile> Find(TileMap tileMap, Tile sourceTile, Tile destinationTile, bool moveThroughOccupied)
    {
        List<Tile> shortestPath = new List<Tile>();

        Dictionary<Tile, int> tileToDistance = new Dictionary<Tile, int>();
        Dictionary<Tile, Tile> tileToOptimalPrevious = new Dictionary<Tile, Tile>();
        List<Tile> unvisited = new List<Tile>(tileMap.GetTiles());
        if (!moveThroughOccupied) {
            unvisited = TileUtility.FilterOutOccupiedTiles(unvisited);
            unvisited.Add(sourceTile);
        }

        tileToDistance.Add(sourceTile, 0);

        Tile currentTile = null;
        int count = 0;
        while (unvisited.Count > 0 && count < 100) {
            count++;
            currentTile = TileWithMinDistance(tileToDistance, unvisited);
            unvisited.Remove(currentTile);
            CalculateDistanceAndUpdatePath(currentTile, tileMap.TopNeighbor(currentTile), tileToDistance, tileToOptimalPrevious, moveThroughOccupied);
            CalculateDistanceAndUpdatePath(currentTile, tileMap.BottomNeighbor(currentTile), tileToDistance, tileToOptimalPrevious, moveThroughOccupied);
            CalculateDistanceAndUpdatePath(currentTile, tileMap.LeftNeighbor(currentTile), tileToDistance, tileToOptimalPrevious, moveThroughOccupied);
            CalculateDistanceAndUpdatePath(currentTile, tileMap.RightNeighbor(currentTile), tileToDistance, tileToOptimalPrevious, moveThroughOccupied);
        }

        Debug.Log("starting return path - " + count);

        Tile returnTile = destinationTile;
        shortestPath.Add(returnTile);
        count = 0;
        while (returnTile != sourceTile && count < 100) {
            count++;
            Debug.Log("finding last hop for " + returnTile.TileData);
            returnTile = tileToOptimalPrevious[returnTile];
            Debug.Log("found " + returnTile.LocationString());
            shortestPath.Add(returnTile);
        }
        Debug.Log("finish return path");
        shortestPath.Reverse();
        return shortestPath;
    }
开发者ID:Shnagenburg,项目名称:TacticsGame,代码行数:42,代码来源:FindShortestPath.cs


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