所以我正在制作一个程序性的地牢制作者,现在我将地图存储在一个多维数组中。我绘制了n个随机位置和随机大小的房间,所有这些都是矩形。如下所示:
'X'代表房间的一部分和'。'代表空的空间。正如你所看到的,因为我随机生成这些房间的大小和位置,其中一些房间重叠,这可以在图像中看到。
我的问题是如何检查是否存在重叠的矩形,从而删除重叠的矩形?不要求任何人编写代码,我只是在努力理解逻辑。
由于
答案 0 :(得分:0)
1)制作一个像这样的2D阵列并在你把房间放在那里之前检查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
在那里,我没有编码'它; - )
在添加新矩形之前,请调用此例程。