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

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

Закрытая тема
 
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
бинарное древо\обучение
Добрый день.
Хотелось бы об этом узнать по больше, т.к многие умные люди каждый раз намекают что ретурн ид спела не есть хорошо когда спелов много.
Собственно что узнал о такой системе отсеивания: состоит из корня, узлов, и листьев(так понял что эт уже и есть спел);
Понял что высота дерева пропорциональна времени перебора, при этом отсеивая ненужное сокращается время перебора
Осталось непонятным как же это исполнить на jass(я С++ не изучал поэтому только читал коментарии т.к синтаксис для меня не понятен, отсюда и вопросы).
1)То есть событие в функции инит
2)затем создаем корень в кондишн и расписываем древо
3)если спелы у меня расписаны в разных триггерах(для каждого свой), то их следует все перенести в один? с этим пунктом прошу описать как чайнику(впринцепе далеко от него не ушел =))

Прошу написать хотя бы на примере 2-3 спелов небольшое древо, для пояснения
к сожалению в статье Адольфа не приатачен пример бинарного дерева, поэтому прошу помощи у вас мудрый народец =)

AlexKARASb добавил:
эх никто еще не написал ответа =\
ну хоть обьясните как составить корень, ветки то я придумал, а корень еще не могу представить в мыслях =\

AlexKARASb добавил:
Это в бинарном древе есть корень или я ошибаюсь?
Код:
if GetSpellAbilityId()>=0x41300000 and GetSpellAbilityId()<0x41400000 then
// сравниваем спелы 0x413 все с таким началом до 14
elseif GetSpellAbilityId()>=0x41400000 and GetSpellAbilityId()<0x41500000
then 
// сравниваем спелы 0x414 все с таким началом до 15 
elseif GetSpellAbilityId()>=0x41500000 and GetSpellAbilityId()<0x41600000
// сравниваем спелы 0x415 все с таким началом до 16
elseif GetSpellAbilityId()>=0x41600000 and GetSpellAbilityId()<0x41700000  
// сравниваем спелы 0x416 все с таким началом до 17
endif
Старый 21.03.2010, 00:12
Hellfim
Новичок
offline
Опыт: 79,880
Активность:
AlexKARASb, скачай AdicHelper (cJass), и синтаксис будет тебе понятен.
Старый 21.03.2010, 00:50
adic3x

offline
Опыт: 107,539
Активность:
вопервых результат GetSpellAbilityId() заносить в локулку, а во вторых просто в каждом ифе дели варианты на два направления, ровно посередине.
Старый 21.03.2010, 10:09
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
ADOLF,
объясни пожалуйста 2 вопроса
1)вот я разделил на много направлений и под конец когда дошел до сотой части как мне дальше сравнивать? просто писать по каждому спелу свой Ид и если он совпадет с Ид в локалке то и вот здесь тоже возникнул у меня вопрос
2)Получается бинарное древо заменяет в каждом триггере условие; то как после этого будет запускатся каждый спел?
3)
Цитата:
на два направления, ровно посередине.

ну просто у меня все спелы имеют такие части 0x41300000, 0x41500000, 0x41600000; вот я и подумал сразу разделить на 3 части

AlexKARASb добавил:
Hellfim,
Цитата:
скачай AdicHelper (cJass), и синтаксис будет тебе понятен.

нет не будет т.к
Цитата:
я С++ не изучал

Кроме азов паскаля, еще никаких языков програмирования не затрагивал. Поэтому и прошу описать подробно 6 вопросов, которые я успел задать в этой теме
Старый 21.03.2010, 13:07
XOR

offline
Опыт: 38,284
Активность:
Ну дык cjass.xgm.ru/manual-ru хотя у тебя возникнет еще кучя вопросов. Запускать будешь в ифе экзекутом или каллом.
Старый 21.03.2010, 13:15
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
XimikS, читал мануал; пока на cjass переходить не буду, смысл если обычный еще не освоил
экзекутом эт понятно
или каллом. А это как? :D всмысле call?
Старый 21.03.2010, 13:17
XOR

offline
Опыт: 38,284
Активность:
Да call FuncName(..)
Старый 21.03.2010, 13:18
DioD

offline
Опыт: 45,184
Активность:
что мешает обучаться в гугле и самостоятельно, во всяком случае попробовать.
Старый 21.03.2010, 17:17
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
call ExecuteFunc(Trig_Actions) что в строке не правильно? вернее подругому задам вопрос, что нужно вводить внутрь скобок? тк названия ф-ций выдают ошибки
Старый 21.03.2010, 17:18
XOR

offline
Опыт: 38,284
Активность:
должна быть строка -_-
XimikS добавил:
call ExecuteFunc("Trig_Actions")
Старый 21.03.2010, 19:05
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
XimikS, так и пишу выдает море ошибок(ну море в смысле на каждую экзекут)
Старый 21.03.2010, 19:50
ScorpioT1000
Работаем
offline
Опыт: отключен
если спеллов меньше чем 500, можешь не беспокоиться.
Старый 21.03.2010, 19:51
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
ScorpioT1001, т_Т где ж ты был 3 дня назад
Старый 21.03.2010, 20:39
ScorpioT1000
Работаем
offline
Опыт: отключен
ну попробуй засечь время перебора между 500 числами (сгенерить там ченибудь) и убедишься что это не имеет почти никакого значения..
Старый 21.03.2010, 20:52
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
ScorpioT1001, фейл >.< какого я карячился и писал это гребанное деревище
ппц просто, ладно тогда можно тему закрыть до 500 спелов мне еще год понадобится наверно
Старый 21.03.2010, 21:02
adic3x

offline
Опыт: 107,539
Активность:
  1. товарищи, ну какое отношение сЖасс имеет к бинарным деревьям? я в упор понять не могу
  2. екзекут кстате хороший вариант
3)
ну просто у меня все спелы имеют такие части 0x41300000, 0x41500000, 0x41600000; вот я и подумал сразу разделить на 3 части
бинарное дерово и "бинар" - двоичный
в любом случае я обьяснить понятнее несмогу
Старый 22.03.2010, 00:19
ScorpioT1000
Работаем
offline
Опыт: отключен
да они не про дерево а про бинарный условный поиск тт
Старый 22.03.2010, 00:52
Закрытая тема

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

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

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

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



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