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


C# Board.CanBuildSettlementHere方法代码示例

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


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

示例1: ScoreEdge

    /*
     * Score an edge based on possible future expansions up to a crtain depth. Scoring changes with distance from start.
     */
    public static double ScoreEdge(Player player, Board board, Edge edge, List<Edge> visitedEdges, List<Node> visitedNodes, int depth, int maxDepth)
    {
        if (depth > maxDepth) {
            return 0;
        }

        double score = 0;
        visitedEdges.Add (edge);

        foreach (Node neighbor in edge.getNeighbors ()) {
            if (neighbor.occupied == Node.Occupation.none && board.CanBuildSettlementHere(neighbor.visual.transform, player, false)) {
                foreach (Tile tile in neighbor.getTiles ()) {
                    score += TileScore (tile) * DEPTH_MODIFIERS[depth];
                }
            }

            if (!visitedNodes.Contains (neighbor)) {
                visitedNodes.Add (neighbor);
                foreach(Edge neighborEdge in neighbor.getRoads ()) {
                    if (!visitedEdges.Contains (neighborEdge)) {
                        score += ScoreEdge (player, board, neighborEdge, visitedEdges, visitedNodes, depth+1, maxDepth);
                    }
                }
            }
        }

        return score;
    }
开发者ID:Gabino3,项目名称:socAI,代码行数:31,代码来源:AIEngine.cs

示例2: GetObjectivesHelper

    /*
     * Helper class that traverses nodes and collects additional objectives given constraints.
     */
    private static void GetObjectivesHelper(Player player, Board board, Node node, Objective objective, List<Objective> objectives, List<Edge> visitedEdges, List<Node> visitedNodes, int depth, int maxDepth)
    {
        visitedNodes.Add (node);

        //Why not add a settlement/upgrade?
        if (node.occupied == Node.Occupation.none) {
            if (board.CanBuildSettlementHere(node.visual.transform, player, true)) {
                Objective newObjective = objective.Clone();
                newObjective.AddSettlement (node);
                objectives.Add (newObjective);
            }
        }
        else if (node.occupied == Node.Occupation.settlement && node.owner == player) {
            Objective newObjective = objective.Clone();
            newObjective.AddCity (node);
            objectives.Add (newObjective);
        }

        //End of the line
        if (depth >= maxDepth) {
            return;
        }

        //Continue traversal
        foreach (Edge road in node.getRoads ()) {
            if (!visitedEdges.Contains (road) && !road.occupied) {
                visitedEdges.Add (road);
                foreach (Node neighbor in road.getNeighbors ()) {
                    if (!visitedNodes.Contains (neighbor)) {
                        Objective newObjective = objective.Clone();
                        newObjective.AddRoad (road);
                        objectives.Add (newObjective);
                        GetObjectivesHelper (player, board, neighbor, newObjective, objectives, visitedEdges, visitedNodes, depth+1, maxDepth);
                    }
                }
            }
        }
    }
开发者ID:Gabino3,项目名称:socAI,代码行数:41,代码来源:AIEngine.cs

示例3: PerformObjective

    public static bool PerformObjective(Objective objective, Board board)
    {
        Player player = objective.GetPlayer ();
        bool partiallyPerformed = false;

        foreach (Edge road in objective.GetRoads ()) {
            if (player.CanBuildRoad () && board.CanBuildRoadHere (road.visual.transform, player)) {
                board.PlaceRoad (road.visual.transform, player);
                partiallyPerformed = true;
            }
        }

        foreach (Node settlement in objective.GetSettlements ()) {
            if (player.CanBuildSettlement () && board.CanBuildSettlementHere (settlement.visual.transform, player, false)) {
                board.PlaceSettlement (settlement.visual.transform, player);
                partiallyPerformed = true;
            }
        }

        foreach (Node city in objective.GetCities ()) {
            if (player.CanBuildCity () && board.CanBuildCityHere (city.visual.transform, player)) {
                board.PlaceCity (city.visual.transform, player);
                partiallyPerformed = true;
            }
        }

        return partiallyPerformed;
    }
开发者ID:Gabino3,项目名称:socAI,代码行数:28,代码来源:AIEngine.cs


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