繁体   English   中英

检查多维数组C#中的矩形重叠

[英]Checking for rectangle overlap in multi-dimensional array C#

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

在此处输入图片说明

“ X”代表房间的一部分,“。” 代表空白空间。 如您所见,由于我是随机生成这些房间的大小和位置,因此这些房间中有些重叠,因此可以在图像中看到。

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

谢谢

1)创建一个2D数组,然后在X放置一个房间之前检查X ;-)如果存在X,则不要在此处放置新的房间。 不必是火箭科学。 请记住,您对此有控制权。 将房间整理逻辑放入一种可以查看网格和房间尺寸的方法中,使其在两种模式下运行:mode1 = return TRUE(如果重叠),模式2,更新网格。 打电话一次,看看您是否有合适的新房间,如果不是,请换个房间!

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM