2017-10-10 37 views
0

因此,我正在制作程序性地下城制造商,现在我将地图存储在多维数组中。我绘制了n个随机位置的房间数量和随机大小,所有这些都是矩形。如下图所示:检查多维数组中的矩形重叠C#

enter image description here

'X' 代表一个房间的一部分和 ''代表空的空间。正如你所看到的,因为我随机产生这些房间的大小和位置,这些房间中的一些重叠,这可以在图像中看到。

我的问题是我将如何去检查是否有重叠的矩形,因此删除重叠的矩形?不要求任何人对此进行编码,我只是在理解逻辑而挣扎。

感谢

+0

也许这不是一个好主意,不要将数据存储为数组。你可以有一些房间。每次添加新房间时,您都可以轻松检查此房间是否与任何现有房间重叠。 – Valerii

回答

0

1)做一个二维数组一样,并检查是否有X的之前,你把一个房间里;-)如果有X的,不要把新的房间那里开始。不必是火箭科学。记住你可以控制这个。将房间制作逻辑放在一个可以看到你的网格和房间尺寸的方法中,让它在两种模式下运行:mode1 =如果重叠,返回TRUE,模式2,更新网格。给它打电话一次,看看你是否有一个好的地方,如果没有,新的房间,另一个房间!

2)蛮力比较:(伪代码)这是如果你有一个单独的drawing.2d.rectangles数组。

bool collides(rect newrect, rect[] allrects) 
    for each item in allrects 
     if item.intersects(newrect) 
      return true 

在那里,我没有 '代码' 它;-)

添加一个新的矩形前,调用这个例程。

+0

感谢您的回答,在我添加房间之前检查是否有X的确为我做了这项工作。干杯! –