vJASS и ООП. - Wc3-Maps Форум













[ Главная · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Strateg, Melissa  
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, спасибо.
 
  • Страница 1 из 1
  • 1
Поиск:
Рейтинг@Mail.ru
Яндекс.Метрика

Copyright © 2010-2017
Вакансии :: Контакты
Мобильная версия сайта
chat