2012-03-16 158 views
0

我正在構建一個簡單的程序,它在C#中的屏幕上創建了一堆散佈的樹。我對C#還是比較新的,所以對我很感興趣。我的程序創建樹,但一些圖像彼此重疊,因爲樹是以一種看似隨機的順序繪製的。如何排序從最大到最小的整數列表

我有一個樹對象的列表,我想知道如何通過樹的Y值(treeObject.position.Y)對這個列表進行排序,這種方式當我調用每棵樹的draw方法時循環它將首先繪製最遠的(最小的Y)。我努力編碼,但它變得太麻煩。

完整的代碼在這裏給出: http://pastebin.com/5G6aecLm

+0

也許你還可以添加你正在使用XNA的代碼(你可以使用像'sorting,XNA,C#'這樣的密鑰' 你可以改變循環以最遠開始或者在random-gen中使用variabels以確保隨機nr的順序是一定的 – GroundZero 2012-03-16 07:33:49

回答

2

使用某種算法,較好的是:QuickSort

0

如果您在使用能夠進行3D的繪圖引擎,只需用世界的鄰視圖。你將看不到任何區別,但是你可以使用z來控制深度(z = -y會產生所需的效果),並且可以高效地縮放,旋轉和變形2D精靈。

1

如果我明白你的問題,有很多方法可以做到這一點,這裏只有一個:

假設你的列表是List<TreeObject>類型:

using System.Linq; 

var q = yourList.AsEnumerable<TreeObject>().OrderBy(obj => obj.position.Y); 

然後就循環●要得到你的對象按正確的順序排列。