[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]


  • Страница 1 из 1
  • 1
Модератор форума: Spidy, blitz3d  
Форум мира Blitz3D » Язык Blitz3D » 2D программирование » Сортир'овка
Сортир'овка
deejexДата: Четверг, 08.04.2010, 14:15 | Сообщение # 1
заядлый прогер
Группа: Пользователи
Сообщений: 522
Награды: 2
Репутация: 14
Статус: Offline
For Player.TPlayer = Each TPlayer
For Player2.TPlayer = Each TPlayer
If Player\ord > Player2\ord Then Insert Player Before First TPlayer
Next
Next

у кого больше ord, тот и становится первым. изначально у всех player ord=1, когда один из player прибавляется в ord, он действительно перемещается на начало, но если потом еще один player прибавится в ord, то цикл замыкается и игра зависает. как можно избавится от этого бага?

p.s.: Player2.TPlayer то же самое, что и без двойки.






Сообщение отредактировал deejex - Четверг, 08.04.2010, 14:20
 
VirusssДата: Четверг, 08.04.2010, 16:19 | Сообщение # 2
Подполковник
Группа: Пользователи
Сообщений: 412
Награды: 2
Репутация: 5
Статус: Offline
А обезатель использовать цикл в цикле? Нельзя ввести глобальные величины типа maxord и сделать один цикл в котором проверять player\ord с maxord?
Ну как то так:
For Player.TPlayer = Each TPlayer
if player\ord > maxprd then
Insert Player Before First TPlayer
maxord=player\ord
end if
Next

Так можно выбрать плеера с максимальным орд. Я не уверен, может это сработает...

 
deejexДата: Четверг, 08.04.2010, 19:13 | Сообщение # 3
заядлый прогер
Группа: Пользователи
Сообщений: 522
Награды: 2
Репутация: 14
Статус: Offline
Quote (Virusss)
Так можно выбрать плеера с максимальным орд.

а нафиг мне это если мне нужна именно сортировка.




 
ParisHiltonДата: Пятница, 09.04.2010, 09:40 | Сообщение # 4
прогер
Группа: Пользователи
Сообщений: 197
Награды: 2
Репутация: 5
Статус: Offline
Если зависает - значит у тебя бесконечный цикл

Должно быть приблизительно так

Quote

for n=1 to 10
for m=1 to 10
if m<>n then
if AR(m)>AR(n) then ' Чтобы не сравнивал сам себя меняем местами
tmp=AR(n)
AR(n)=AR(m)
AR(m)=tmp
end if
end if
next
next


Мы ищем предмет цели для того чтобы найти результаты его следствия
 
Форум мира Blitz3D » Язык Blitz3D » 2D программирование » Сортир'овка
  • Страница 1 из 1
  • 1
Поиск: