Как сделать сортировку в рейтинге игроков?
В прошлой статье мы создали рейтинг игроков, а теперь было бы неплохо сделать сортировку игроков по количеству набранных игроков к примеру. Делается это не сложно. Нужно лишь в цикле пробегать по всем строкам и смотреть на значения набранных очков.
Итак, приступим. Создадим алгоритм, в котором будем пробегать по всем строкам, делая сравнение количества набранных очков. Начнем:
For j:=1 to Stroki-1 do
Begin
If Form2.Stringgrid1.cells[1,j]< Form2.Stringgrid1.cells[1,j+1] then
Begin
For i:=0 to 4 do
Begin
S:= Form2.Stringgrid1.cells[i,j];
Form2.Stringgrid1.cells[i,j]:=Form2.Stringgrid1.cells[i,j+1];
Form2.Stringgrid1.cells[i,j+1]:=s;
End;
End;
End;
Если рассмотреть наш с Вами алгоритм, то мы заметим, что мы проверяем значения набранных очков по всем строкам если попадается большее нашего, то мы меняем их местами. Сначала мы все значения сравниваем с первой строкой, потом второй, третьей и т.д.
Получается что мы всегда будем стремиться найти наибольшее значение из оставшихся (то есть находящихся ниже активного). В итоге получится в полнее нормально отсортированный рейтинг игроков.
Переменная s:string играет роль временной переменной, в которую мы записываем значение активной строки, так как в эту строку будет записано другое значение. Тогда чтобы не потерять перезаписанное значение, нам приходится его временно записать перемену, а затем с нее уже вытянуть значение и записать его на строку которая ниже (с которой ведется обмен).
Ну и, пожалуй, на этом у меня все. Надеюсь, статья Вам пригодится в дальнейшем. Всем удачи в Ваших начинаниях по разработке игр и программ!
Автор: Виталий Соколов
Источник: delgame.at.ua
|