/// <summary>
/// 判断两个点是否连通
/// </summary>
/// <param name="floor1">起始节点层数</param>
/// <param name="number1">结束节点在一层中的位置</param>
/// <param name="floor2">结束节点层数</param>
/// <param name="number2">结束节点在一层中的位置</param>
/// <param name="map">网格地图</param>
/// <returns>是否连通</returns>
private static Boolean IsTwoPointConnected(Int32 floor1, Int32 number1, Int32 floor2, Int32 number2, Dictionary<String, SmallgameExploreTypeConfig> map, HashSet<String> IsVisitedPoint)
{
if (floor1 == floor2 && number1 == number2)
{
return true;
}
var xOffset = new Int32[] { 0, 1, 0, -1 };
var yOffset = new Int32[] { 1, 0, -1, 0 };
for (int i = 0; i < 4; i++)
{
var point = GetKey(floor1 + xOffset[i], number1 + yOffset[i]);
if (map.ContainsKey(point) && !IsVisitedPoint.Contains(point) && map[point].IsPass == true)
{
IsVisitedPoint.Add(point);
if (IsTwoPointConnected(floor1 + xOffset[i], number1 + yOffset[i], floor2, number2, map, IsVisitedPoint))
{
return true;
}
}
}
return false;
}