【问题标题】:Checking for rectangle overlap in multi-dimensional array C#检查多维数组C#中的矩形重叠
【发布时间】:2017-10-10 19:09:23
【问题描述】:

所以我正在制作一个程序地牢制造商,现在我将地图存储在一个多维数组中。我绘制了 n 个随机位置和随机大小的房间,所有这些房间都是矩形。如下图:

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

我的问题是我将如何检查是否有重叠的矩形并因此删除重叠的矩形?没有要求任何人编写此代码,我只是在努力理解逻辑。

谢谢

【问题讨论】:

  • 也许不将数据存储为数组是个好主意。您可以拥有一系列房间。每次添加新房间时,您都可以轻松检查该房间是否与任何现有房间重叠。

标签: c# arrays procedural


【解决方案1】:

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

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

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

在那里,我没有“编码”它;-)

在添加新矩形之前,调用此例程。

【讨论】:

  • 感谢您的回答,在我添加房间之前检查是否有 X 为我完成了这项工作。干杯!
猜你喜欢
  • 1970-01-01
  • 2016-03-12
  • 1970-01-01
  • 1970-01-01
  • 2016-06-09
  • 2012-06-21
  • 2017-05-13
  • 2015-06-01
相关资源
最近更新 更多