110,534
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 获取图片在水平方向可移动的范围
/// </summary>
private static List<int> GetRangeX(int x, int y)
{
List<int> list = new List<int>();
int s = 0, e = 18;
for (int i = x - 1; i >= 0; i--) if (_boxs[i, y].Type != _boxNull) { s = i + 1; break; }
for (int i = x + 1; i < 19; i++) if (_boxs[i, y].Type != _boxNull) { e = i - 1; break; }
for (int i = s; i <= e; i++) list.Add(i);
return list;
}
/// <summary>
/// 获取图片在垂直方向可移动的范围
/// </summary>
private static List<int> GetRangeY(int x, int y)
{
List<int> list = new List<int>();
int s = 0, e = 10;
for (int i = y - 1; i >= 0; i--) if (_boxs[x, i].Type != _boxNull) { s = i + 1; break; }
for (int i = y + 1; i < 11; i++) if (_boxs[x, i].Type != _boxNull) { e = i - 1; break; }
for (int i = s; i <= e; i++) list.Add(i);
return list;
}
//获取X方向2个图片拥有相同的X坐标
List<int> list = GetRangeX(x1, y1).Intersect(GetRangeX(x2, y2)).ToList();
if (list.Count != 0)
{
for (int i = 0; i < list.Count; i++)
{
Flag = true;
for (int j = Math.Min(y1, y2) + 1; j <= Math.Max(y1, y2) -1; j++)
if (_boxs[list[i], j].Type != _boxNull) { Flag = false; break; }
if (Flag) return true;
}
}