2011-10-05 107 views
0

我需要救援項目來解決一些極端深度管理問題。我們沒有想法!基於MC位置的複雜深度分類問題

該項目涉及各種尺寸的堆疊盒,每個盒子都是等距的 - 這樣就可以在盒子的前面編織這個盒子(但我們需要在盒子的前面編織盒子,等等 - 任何事情都會發生)

這裏的項目,因爲它主張:

http://clearlytrained.com/depth/

您可以拖動箱子然後放手在網格上,如果格柵間距爲綠色 - 如果你拿!兩個格子高一格,然後放在彼此旁邊,然後拿一個更寬的盒子(2x2)並放在b上面另外(因此兩個下方框的間隙位於放置在頂部的框的中間),您會看到最右下方框的深度現在更高,並且位於頂部框之上。我完全理解爲什麼會發生這種情況,但無論我們如何按順序掃過網格,這在某種程度上都會發生在它現在的狀態。

我們目前正在排序的深度方式是掃描網格數組,它根據我們掃過行和列的方向存儲屏幕上每個盒子的名稱,然後我們得到一個訂單每個盒子的深度。問題是,即使一個盒子可能佔用6個網格空間,我們也不會將深度設置爲6次 - 我們只是在我們第一次在數組中實現它的實例名稱時設置它 - 所以如果我們通過網格從上到下,從左到右,一個箱子在另一個箱子的下方,而在右邊的箱子總是有更高的深度。不好!

我可以看到解決這個問題的唯一方法是找出某種盒子到盒子比較第一個X然後Y值,設置某種雙循環/如果狀態條件,或多或少,以編程方式每次我們移動或放置一個新盒子時,手都會放置每個盒子的深度。所以複雜性從設置盒子實例名稱的深度,到將盒子與其他盒子進行比較,然後將其他盒子與其他盒子進行比較,並提出我們需要堆疊深度的實際順序。在某些情況下,我們可能從左到右,然後從下到上,然後從左到右 - 沒有平滑的圖案。

請隨身攜帶提供的鏈接,讓我知道如果您有任何其他問題或需要更多信息,我絕望!

回答

0

我會將所有框添加到一個數組,並通過X和Y值(瓦X和Y)進行排序。這不是一個大集合,所以你不必擔心性能。

按X排序,然後如果X是相同的,按Y排序。除非我遺漏明顯的東西,否則應該解決它。

+0

我們想到了 - 問題是一些盒子可能有3格寬的空間 - 所以在它上面的3x寬盒子和1x1寬盒子都會註冊爲具有相同的X位置 - 第二個盒子可以放入另一個盒子基於X值的列(作爲第一個檢查條件),我們已經搞砸了,並在3倍寬的盒子頂部放置了一些東西。所以,深度適用於彼此堆疊的盒子 - 但我們已經有了或多或少的工作,並沒有解決問題。這是我認爲我們需要一些如何檢查一切與其他一切..嘆息 –

+0

嗯。是的,我想我明白你的意思了。如果你要從右上角開始設置他們佔據的瓷磚的繪製順序,然後以「同心」模式走出去?像這樣:http://dl.dropbox.com/u/340238/Screen%20shot%202011-10-05%20at%205.56.16%20PM.jpg這可能不是最佳的,但我想不出其他方式在這一刻。數字是反轉繪製順序。例如,1在所有其他之上。你還必須記住哪些盒子已經被「使用」過了(在一個瓷磚中找到),所以你不要兩次添加它們。 –

+0

謝謝 - 但同樣的問題發生 - 如果1開始在左下角,那麼我們從那裏同心,最後一個網格空間,如數字4,將設置最後..如果4在底部它的深度將是高於它上面的一個框 - 我們試圖將它與x/y位置合併爲循環,但遇到了相同的問題。看到這個問題有多容易,但我們無法將其轉換爲函數/碼! –