因此,我正在製作程序性地下城製造商,現在我將地圖存儲在多維數組中。我繪製了n個隨機位置的房間數量和隨機大小,所有這些都是矩形。如下圖所示:檢查多維數組中的矩形重疊C#
'X' 代表一個房間的一部分和 ''代表空的空間。正如你所看到的,因爲我隨機產生這些房間的大小和位置,這些房間中的一些重疊,這可以在圖像中看到。
我的問題是我將如何去檢查是否有重疊的矩形,因此刪除重疊的矩形?不要求任何人對此進行編碼,我只是在理解邏輯而掙扎。
感謝
因此,我正在製作程序性地下城製造商,現在我將地圖存儲在多維數組中。我繪製了n個隨機位置的房間數量和隨機大小,所有這些都是矩形。如下圖所示:檢查多維數組中的矩形重疊C#
'X' 代表一個房間的一部分和 ''代表空的空間。正如你所看到的,因爲我隨機產生這些房間的大小和位置,這些房間中的一些重疊,這可以在圖像中看到。
我的問題是我將如何去檢查是否有重疊的矩形,因此刪除重疊的矩形?不要求任何人對此進行編碼,我只是在理解邏輯而掙扎。
感謝
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
在那裏,我沒有 '代碼' 它;-)
添加一個新的矩形前,調用這個例程。
感謝您的回答,在我添加房間之前檢查是否有X的確爲我做了這項工作。乾杯! –
也許這不是一個好主意,不要將數據存儲爲數組。你可以有一些房間。每次添加新房間時,您都可以輕鬆檢查此房間是否與任何現有房間重疊。 – Valerii