本文整理汇总了C#中Position.isEqualTo方法的典型用法代码示例。如果您正苦于以下问题:C# Position.isEqualTo方法的具体用法?C# Position.isEqualTo怎么用?C# Position.isEqualTo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Position
的用法示例。
在下文中一共展示了Position.isEqualTo方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: blockPathPosition
public void blockPathPosition(Position pos)
{
bool positionIsInPath = false;
int i = this._pathPositionIndex;
while (!positionIsInPath && i<this._pathPositions.Count)
{
Position p = (Position)this._pathPositions[i];
positionIsInPath = (pos.isEqualTo(p));
i++;
}
if (positionIsInPath)
{
Position startPos = (Position)this._pathPositions[this._pathPositionIndex-1];
Position endPos = MapScript.sharedInstance().getHomePosition();
ArrayList positions;
if (PathScript.sharedInstance().existsPathFromPosToPos(startPos, endPos, out positions))
{
PathScript.sharedInstance().addSegmentsFromPositions(positions);
PathScript.sharedInstance().removeSegmentsFromPositions(this._pathPositions);
this._pathPositions = positions;
this._pathPositionIndex = 0;
this.getNextPosition();
}
}
}
示例2: 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;
}
示例3: positionIsBlocked
private bool positionIsBlocked(Position pos)
{
bool blockedBySelf = false;
bool anyDefense = false;
if (this._blockedPositions != null) {
int i = 0;
while (!blockedBySelf && i<this._blockedPositions.Count) {
Position next = (Position)this._blockedPositions [i];
blockedBySelf = pos.isEqualTo (next);
i++;
}
}
if (!blockedBySelf) {
DefenseScript def;
anyDefense = CreateDefensesScript.sharedInstance ().anyDefenseAtPosition (pos, out def);
}
return (blockedBySelf || anyDefense);
}