2012-03-16 160 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); 

然后就循环●要得到你的对象按正确的顺序排列。