本文整理汇总了C#中ISpace.IsAreaFree方法的典型用法代码示例。如果您正苦于以下问题:C# ISpace.IsAreaFree方法的具体用法?C# ISpace.IsAreaFree怎么用?C# ISpace.IsAreaFree使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ISpace
的用法示例。
在下文中一共展示了ISpace.IsAreaFree方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Evaluate
public override float Evaluate(ISpace space, Point markedPoint, Point unmarkedPoint)
{
// walk m_length tiles and verify they are all free
Point cur = unmarkedPoint;
for (int i = 0; i < m_length; ++i)
{
if (!space.IsAreaFree(cur)) return float.PositiveInfinity;
cur = DirectionUtils.Move(cur, m_direction);
}
// went one too far, so back up to last tile in the dealio
cur = DirectionUtils.Move(cur, m_direction.Opposite);
int blockedCount = 0;
if (!space.IsAreaFree(cur)) blockedCount++;
if (!space.IsAreaFree(DirectionUtils.Move(cur, m_exitDir.RotationCW))) blockedCount++;
if (!space.IsAreaFree(DirectionUtils.Move(cur, m_exitDir.RotationCCW))) blockedCount++;
if (!space.IsAreaFree(DirectionUtils.Move(cur, m_exitDir))) blockedCount++;
return blockedCount / 4.0f;
}
示例2: Evaluate
public override float Evaluate(ISpace space, Point markedPoint, Point unmarkedPoint)
{
float bestCost = float.PositiveInfinity; // worst possible, best possible is 0
foreach (Direction dir in m_directions)
{
// walk m_length tiles and verify they are all free
Point cur = unmarkedPoint;
int counter = 0;
int blockedCounter = 0;
for (int i = 0; i < m_length; ++i)
{
if (!space.IsAreaFree(cur))
{
blockedCounter = Int32.MaxValue - 5;
break;
}
counter += 2;
if (!space.IsAreaFree(dir.RotationCW.Move(cur))) blockedCounter++;
if (!space.IsAreaFree(dir.RotationCCW.Move(cur))) blockedCounter++;
cur = dir.Move(cur);
}
counter++;
if (!space.IsAreaFree(cur)) blockedCounter++; // one past the end
float score = (float)blockedCounter / counter;
if (score < bestCost)
{
bestCost = score;
m_bestEvaledDirection = dir;
}
}
return bestCost;
}