Sidhe
Unity3D engine
offline
Опыт:
7,721Активность: |
Задача с нумерацией
Вообщем сразу к сути задачи:
Создаются юниты циклом (unit[i]), которые имеют нумерацию в массиве (i). Максимально возможных юнитов 90. Юниты разбиты по таблицам: первая таблица от 1 до 30 юнитов, вторая от 31 до 60, ну и соотв. третья от 61 до 90. В таблицах юниты создаются не все, тоесть из 30 возможных в таблице, могут создаваться только, к примеру, 5. Получается, что в каждой таблице юнитов разное количество (в первой, к примеру 10, во второй 7, в третей - 21). НО переменная i достигнет масимального числа - 90, тоесть юниты строго получат нумерацию, отведенную под свою таблицу. Нужно: как то пронумеровать юнитов так, чтобы можно было к ним применять GetRandomInt(1, MaxUnits), но не затрагивая имеющуюся последовотельность нумерации (units[i] не должна быть затронута). Можно с помощью доп. переменных. Неважно. Суть рандома: каждый игрок введет команду, которая случаным образом присвоит ему юнита, одного из созданных на данный момент. Проблема: рандом может затронуть нумерацию отсутствующих юнитов в таблице. (это суть задачи - исправить) З.Ы. голову сломать можно, да, поэтому обратился за помощью =) Код:
|
05.05.2012, 00:33 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DaeDR
offline
Опыт:
8,074Активность: |
Sidhe, Если они иду по порядку (в этих трех таблицах), то можно просто ввести 3 доп. переменные integer, которые будут следить за числом юнитов в таблице. |
05.05.2012, 08:45 | #2
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Klop
Папа римский
offline
Опыт:
13,006Активность: |
Sidhe, генерировать число пока u[случайное число] будет не равно нулл
т.е
do{ rand = GetRandomInt(i,Max) exitwhen u[rand] != null } что то в этом роде |
05.05.2012, 08:59 | #3
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sidhe
Unity3D engine
offline
Опыт:
7,721Активность: |
Klop, можно попробовать)
Sidhe добавил: DaeDR, тогада будет проблема с обращением к числу, т.к. одна переменная будет работать по основной нумерации, а введенная вторая - по другим. Соответственно рандом выпадет на число 3 к прмиеру, а это юнит будет 64 по основной. Хотя как тоже вариант я пробовал, но скорее всего лучше в одну переменную это заносить, а не в 3 Sidhe добавил: Klop, ГЕНИАЛЬНО блин!)) но так работает теперь, спасибО -_-!!! больше задачу, блин, писал =\ можно закрыть |
05.05.2012, 11:46 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Вот это может пригодиться: xgm.ru/forum/showthread.php?p=522712&h=1#post522712 |
05.05.2012, 12:17 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sidhe
Unity3D engine
offline
Опыт:
7,721Активность: |
ScorpioT1000, ты показывал уже, я написал свою на этой основе)
Код:
на эти строчки ругается компилятор вообще то) точнее на 2 строчку. если руками выставить массив на 8100 тогда все работает |
05.05.2012, 12:27 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
исправил |
05.05.2012, 13:19 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|