本文整理汇总了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;
}
示例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);
}
}
}
}
}
示例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;
}