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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
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. Он используется, если цикл идёт по группе игроков. А тут цикл целых числел. Т.е. нужна функция (не помню как называется), которая берёт игрока по индексу, который используется в цикле.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.