vJASS и ООП.
|
|
-
BARSIK | Дата: Вторник, 08-01-2013, 12:42:03 | Сообщение # 1 |
Темный рыцарь
загрузка наград ...
Группа: V.I.P.
Сообщений: 1399
Репутация: 326
Статус: Не на сайте
|
Довольна-таки частенько встречаю ООП (Объектно Ориентированное Программирование). Говорят на понимание этой концепции у некоторых уходят как годы, так и месяцы. Вот только с чего начать не могу. Дайте советы.Добавлено (08/01/2013, 12:42:03) --------------------------------------------- Хотя кого я обманываю... Никто никогда не ответит в этой теме.
|
| | |
-
Imba | Дата: Вторник, 08-01-2013, 12:45:37 | Сообщение # 2 |
КотЭ
загрузка наград ...
Группа: V.I.P.
Сообщений: 1395
Репутация: 1289
Статус: Не на сайте
|
BARSIK, в Джасс?? я давал статью поищи в Помощь по Ворлд Эдитор...
|
| | |
-
BARSIK | Дата: Вторник, 08-01-2013, 13:08:56 | Сообщение # 3 |
Темный рыцарь
загрузка наград ...
Группа: V.I.P.
Сообщений: 1399
Репутация: 326
Статус: Не на сайте
|
Imba, боюсь все не так просто... Ты знаешь ООП?
|
| | |
-
влад10011 | Дата: Вторник, 08-01-2013, 20:49:38 | Сообщение # 4 |
загрузка наград ...
Группа: V.I.P.
Сообщений: 1265
Репутация: 1039
Статус: Не на сайте
|
Само изучение WE и есть ООП, тк ты создаёшь и работаешь с объектами(структурами) вызываешь методы(изменение\создание и тд, хотя в варе это функции) в vJass структура- это объект, и она имеет свои свойства и методы- для работы со свойствами. пример сJass(тоже самое, но с блоками): Код struct StrUnit { unit body real hp
static StrUnit Create() { StrUnit new=StrUnit.create(); //Выделяем память под "новое тело" unit u=CreateUnit(Player(0),'hpea',0,0,0); //Создаём юнита new.body=u; //Устанавливаем само "тело структуры" new.hp=GetWidgetLife(u); //Устанавливаем свойство hp return new //Возвращаем его индекс(на самом деле это массив, а структура это integer переменная) }
void AddHP(real addHP) { SetUnitLife(this.body,this.hp+addHP); //Добавляем к его hp, hp указанное в аргументах } } На хгме было где то статья, где подробно описывается как делать контейнеры операции с структурами и тд. Сюда, я думаю по поводу Jass нет смысла писать, тк тут, его знаю только я и ещё мб пару человек...
Look at my horse!
|
| | |
-
AncientPenguin | Дата: Среда, 09-01-2013, 03:18:23 | Сообщение # 5 |
загрузка наград ...
Группа: Избранные
Сообщений: 449
Репутация: 526
Статус: Не на сайте
|
Цитата (BARSIK) Говорят на понимание этой концепции у некоторых уходят как годы, так и месяцы.
У меня ушла пара дней, только я не понимал как его правильно реализовать.
Да и понимать ее не особенно нужно для варика, достаточно представить себе что структура это набор переменных и работать с ними как со структурами варика (юнитами, декорациями ну и всем прочим)
Например если есть структура юнит с переменными хп, урон, защита, то пишеш функции в духе:
function AttackUnit(CustomUnit u1, CustomUnit u2){ u2.hp = u1.dmg - u2.def }
Самые распространенные варианты использования: 1) Вместо ассоциативных массивов 2) Добавление лишних данных юнитам. Например если хочешь добавить голод то пишешь структуру
struct SUnit{ unit u integer hungry } потом создаешь глобальный массив SUnit и при создании/смерти юнитов добавляешь/удаляещь структуры в массив и через хеш вешаешь на юнита его индекс в массиве (можно и без хеша, но будет дольше).
Вообщем если будут вопросы обращайся.
|
| | |
-
BARSIK | Дата: Среда, 09-01-2013, 08:10:14 | Сообщение # 6 |
Темный рыцарь
загрузка наград ...
Группа: V.I.P.
Сообщений: 1399
Репутация: 326
Статус: Не на сайте
|
AncientPenguin, влад10011, спасибо.
|
| | |