2012-03-16 2 views
0

Я строю простую программу, которая создает кучу разбросанных деревьев на экране в C#. Я все еще относительно новичок в C#, так что несите меня. Моя программа создает деревья, но некоторые из изображений заканчиваются друг на друга, потому что деревья рисуются в кажущемся случайном порядке.Как сортировать список целых чисел, самых больших и наименьших

У меня есть список объектов дерева, и мне было интересно, как это делается при сортировке этого списка по значению Y деревьев (treeObject.position.Y), таким образом, когда я вызываю все методы рисования деревьев в a для петля, он сначала вытащит самые отдаленные назад (самые маленькие Y). Я пытался жестко кодировать его, но это стало слишком громоздким.

Полный код приведен здесь: http://pastebin.com/5G6aecLm

+0

Возможно, вы также можете добавить код, в котором вы используете XNA (вы можете использовать такие клавиши, как «сортировка, XNA, C#». Вы можете изменить цикл, чтобы начать с самого дальнего. Или используйте переменные в случайном гене чтобы убедиться, что случайные nr находятся в определенном порядке – GroundZero

ответ

2

Используя некоторый алгоритм сортировки, предпочтительно: QuickSort

0

Если вы используете рисунок двигатель, способный 3D, просто использовать вид орто мира. Вы не увидите никакой разницы, но вы сможете использовать z для управления глубиной (z = -y будет иметь желаемый эффект), а также возможность масштабировать, вращать и эффективно преобразовывать 2D-спрайты.

1

Если я понял вашу проблему, есть много способов сделать это, вот только одно:

Предполагая, что ваш список типа List<TreeObject>:

using System.Linq; 

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

Тогда просто цикл д, чтобы получить ваш объектов в правильном порядке.

Смежные вопросы