2015-05-24 8 views
0

Я думаю, что я просто попытаюсь придумать магическое решение проблемы, которая требует использования другой структуры данных, чтобы она работала, но здесь идет.Сортировка массивов на основе чужого значения

В настоящее время я участвую в гоночной игре, и хочу обновить текущее положение игрока. Для этого я отслеживаю две вещи, их текущую контрольную точку (количество контрольно-пропускных пунктов, через которые они прошли). Затем я проверяю расстояние между каждым автомобилем и следующей контрольной точкой, к которой они направляются.

Когда функция определения позиции вызывается (каждая секунда), количество контрольных точек автомобилей помещается в массив, поэтому [0] в массиве будет car1 и т. Д., А расстояние от каждого автомобиля и следующей контрольной точки они направляются в также находится в массиве, поэтому [0] будет расстоянием car1 до следующей контрольной точки.

Что мне нужно - это способ сортировки двух массивов в тандеме, чтобы они по-прежнему относились к одному и тому же автомобилю, когда я получаю доступ к элементу из любой из них, однако проблема в том, что я, кажется, застрял, я использовал Array. Сортируйте (,) и поместите два там, чтобы они выровнялись, но сказали, что у меня есть 3 машины на 2 контрольно-пропускных пунктах, а остальные на 1 машины с 2 контрольно-пропускными пунктами не сортируются по расстоянию.

Есть ли что-нибудь, что вы, ребята, можете придумать, это может исправить это. Я пытался избежать использования getcomponent и т. Д., Поэтому ive заставил скрипт позиции получить доступ к статическим переменным, которые относятся к каждому отдельному номеру машин и расстоянию до следующего CP, поэтому я пытался избежать классов, а что нет.

Я чувствую, что я на 80% оттуда, поэтому его раздражает, прося о помощи.

+3

Немного кода поможет –

+0

Идеи здесь могут помочь http://stackoverflow.com/questions/3470098/linq-list-sort-based-on-another-list –

+0

Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

ответ

1
  • Сделайте объект, содержащий как расстояние, так и контрольную точку.
  • ли CarList.Sort((x, y) => (your sorting logic here) ИЛИ Реализовать IComparable для этого объекта и вызвать своего род

Вы будете поддерживать один список и вы логику сортировки и сравнения автомобилей будут скрыты в каждом объекте.

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