本文整理汇总了C#中Position.isInRange方法的典型用法代码示例。如果您正苦于以下问题:C# Position.isInRange方法的具体用法?C# Position.isInRange怎么用?C# Position.isInRange使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Position
的用法示例。
在下文中一共展示了Position.isInRange方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: rExistsPathFromPosToPos
private bool rExistsPathFromPosToPos(Position start, Position end, ref ArrayList positions, ref ArrayList visited, ref ArrayList allPossiblePaths, ref int shortestPathLength)
{
__nCalls++;
if (positions.Count >= shortestPathLength) {
return false;
}
bool isValid = false;
// CASES TO IGNORE
int mapRows = MapScript.sharedInstance ().getNRows ();
int mapColumns = MapScript.sharedInstance ().getNColumns ();
bool ignore = (!start.isInRange (mapRows, mapColumns));
if (!ignore) {
ignore = (this.positionIsBlocked (start));
if (!ignore) {
int i = 0;
while (!ignore && i<visited.Count) {
Position visitedPos = (Position)visited [i];
ignore = (visitedPos.isEqualTo (start));
i++;
}
}
}
int v = visited.Count;
visited.Add (start);
if (ignore) {
isValid = false;
} else {
// POSITION MAY BE VALID
int p = positions.Count;
positions.Add (start);
bool isFinished = (start.isEqualTo (end));
if (isFinished) {
isValid = true;
if (positions.Count < shortestPathLength) {
shortestPathLength = positions.Count;
allPossiblePaths.Add (positions.Clone ());
}
} else {
Position next;
ArrayList directions = new ArrayList (4);
directions.Add (Direction.kRight);
directions.Add (Direction.kUp);
directions.Add (Direction.kLeft);
directions.Add (Direction.kDown);
int i = 0;
while (i < directions.Count) {
Direction dir = (Direction)directions [i];
next = start.move (dir);
isValid |= this.rExistsPathFromPosToPos (next, end, ref positions, ref visited, ref allPossiblePaths, ref shortestPathLength);
i++;
}
}
positions.RemoveAt (p);
}
visited.RemoveAt (v);
return isValid;
}
示例2: positionsIsValid
public bool positionsIsValid(Position pos)
{
return pos.isInRange (this.getNRows (), this.getNColumns ());
}