Каким образом можно выбрать рандомного игрока среди играющих людей?

DarKRs,
Переменная-счётчик = 0
Цикл от 1 до 12
Если игрок - человек и играет
  • То занести его в массив играющих игроков с индексом "переменная счётчик"
  • Увеличить переменную счётчик на 1
Если играет 6 человек, т.е. 1, 3, 6, 7, 8, 10 - они будут занесены в массив.
Рандомное число = рандомное значения от 0 до "переменная счётчик" - 1
Рандомный игрок = массив[рандомное число]
В итоге нет ни выходов за пределы массива, и рандом среди тех, кто играет.
Примерно тоже самое было описано выше
Накидал бы хотя бы на gui, но под рукой редактора нет.
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
скорее всего ты при инициализации проверяешь статус слота игрока, а этого делать нини ))) ибо это частенько может приводить к десинку, вот эти игроки и получают его благополучно во время инициализации)))
ответ
Steal nerves:
Ну можно по-разному. Главное понять от чего отталкиваться.
Создаем две переменные: одна целочисленная К и вторая целочисленная G с массивом.
событие - инициализация
действие - цикл А от 1 до 6 //это игроки 1-6 -=1 клан или можно от 1-3, у тебя же 3 первых игрока
  if  игрок (A) = комп and игрок (А) = играет then
	К=К+1 //кол-во игроков
	G (К) = А //номер игрока, в этой ячейке хранится номер игрока
 endif
также можно было создать группу игроков, и при инициализации засунуть и использовать ее, но не важно.
Вызываем
I=Random (от 0 до К) //короче I - это целочисленная переменная, К - общее кол-во игроков
И передать здания Игрока Х игроку ( G (I) )
ответ
знаешь я не хочу ссорится из за всяких пустяков, видимо тебя не учили в школе что обзываться плохо
смотри и учись
может поймешь однажды что за такие слова я могу и отрубить голову топором если найду тебя....спасибо за подсказки вопрос закрыт.
ответ
и перед этим всем действом надо вставить set bj_wantDestroyGroup = true чтоб группа не утекала
ответ
Свойства игрока - Кланы - Нестандартные кланы + Фикс. параметры игрока (ставим эти галочки и все будет работать).

32
Очевидно что занести всех играющих игроков в массив, а потом выбрать случаного игрока из массива с помощью GetRandomInt( 0, до макс игроков)
9
quq_CCCP:
Очевидно что занести всех играющих игроков в массив, а потом выбрать случаного игрока из массива с помощью GetRandomInt( 0, до макс игроков)
Если брать до макс игроков разве не может выйти за пределы массива? Да и вообще ваш ответ плохо понимаю. Я же получу от 0 до (допустим) 6 (игроков играет) а если игрок на 8й позиции или подобноее
32
DarKRs, Ну для того и массив, вы заносите туда игроков по очереди, в нулевую ячейку первого играющего игрока, пусть это будет игрок на синем слоте, потом в первую ячейку массива второго играющего игрока - ну пусть далее синезеленый, и так пока все играющие игроки не кончатся, потом генерируем случайное число от 0 до максимума играющих игроков, какое выпадет, из такого номера ячейки массива и берем игрока.
9
Все ещё не могу догнать. Если в размер массива 6 (внесено 6 игроков) а зарандомилось 10. То это же выход за пределы массива?
32
DarKRs, в jass размер массива 8192, так для справки, игроков вы заносите в массив каждый раз когда хотите найти рандомного, вдруг кто то ливнул?
И зачем делать рандом больше числа играющих игроков? Вы проверяете в цикле все слоты, кто играет, и заносите играющих в массив.
9
Ладно, спасибо. Вы пытались помочь. Но я в упор не вижу как это реализовать
5
DarKRs,
Переменная-счётчик = 0
Цикл от 1 до 12
Если игрок - человек и играет
  • То занести его в массив играющих игроков с индексом "переменная счётчик"
  • Увеличить переменную счётчик на 1
Если играет 6 человек, т.е. 1, 3, 6, 7, 8, 10 - они будут занесены в массив.
Рандомное число = рандомное значения от 0 до "переменная счётчик" - 1
Рандомный игрок = массив[рандомное число]
В итоге нет ни выходов за пределы массива, и рандом среди тех, кто играет.
Примерно тоже самое было описано выше
Накидал бы хотя бы на gui, но под рукой редактора нет.
Принятый ответ
5
DarKRs, почти. Рандом должен быть от 0 до Buf_A - 1. Т.к. первый игрок заносится в массив с индексом 0. А т.к. рандом от и до включительно, из последнего числа надо отнять единицу.
И да, там не picked player. Он используется, если цикл идёт по группе игроков. А тут цикл целых числел. Т.е. нужна функция (не помню как называется), которая берёт игрока по индексу, который используется в цикле.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.