XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
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] не должна быть затронута). Можно с помощью доп. переменных. Неважно.

Суть рандома: каждый игрок введет команду, которая случаным образом присвоит ему юнита, одного из созданных на данный момент.

Проблема: рандом может затронуть нумерацию отсутствующих юнитов в таблице. (это суть задачи - исправить)

З.Ы. голову сломать можно, да, поэтому обратился за помощью =)

Код:
do {units[i] = CreateUnit(Player(0), RAW, X, Y, 0.)} 
whilenot {i++==90}
Миниатюры
Кликните на картинку для увеличения
Название:  рандом.jpg
Просмотров: 16
Размер:  95.8 Кбайт  
Старый 05.05.2012, 00:33
DaeDR

offline
Опыт: 8,074
Активность:
Sidhe, Если они иду по порядку (в этих трех таблицах), то можно просто ввести 3 доп. переменные integer, которые будут следить за числом юнитов в таблице.
Старый 05.05.2012, 08:45
Klop
Папа римский
offline
Опыт: 13,006
Активность:
Sidhe, генерировать число пока u[случайное число] будет не равно нулл
т.е
do{
rand = GetRandomInt(i,Max)
exitwhen u[rand] != null
}
что то в этом роде
Старый 05.05.2012, 08:59
Sidhe
Unity3D engine
offline
Опыт: 7,721
Активность:
Klop, можно попробовать)

Sidhe добавил:
DaeDR, тогада будет проблема с обращением к числу, т.к. одна переменная будет работать по основной нумерации, а введенная вторая - по другим. Соответственно рандом выпадет на число 3 к прмиеру, а это юнит будет 64 по основной. Хотя как тоже вариант я пробовал, но скорее всего лучше в одну переменную это заносить, а не в 3

Sidhe добавил:
Klop, ГЕНИАЛЬНО блин!)) но так работает теперь, спасибО

-_-!!! больше задачу, блин, писал =\

можно закрыть
Старый 05.05.2012, 11:46
ScorpioT1000
Работаем
offline
Опыт: отключен
Вот это может пригодиться: xgm.ru/forum/showthread.php?p=522712&h=1#post522712
Старый 05.05.2012, 12:17
Sidhe
Unity3D engine
offline
Опыт: 7,721
Активность:
ScorpioT1000, ты показывал уже, я написал свою на этой основе)
Код:
public integer RandMemMax = 8100
    private integer array RandMem[RandMemMax]

на эти строчки ругается компилятор вообще то) точнее на 2 строчку. если руками выставить массив на 8100 тогда все работает
Старый 05.05.2012, 12:27
ScorpioT1000
Работаем
offline
Опыт: отключен
исправил
Старый 05.05.2012, 13:19
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 12:16.