Добавлен , опубликован
Карта, демонстрирующая реализацию кастомного управления для варкрафта (aka "как в TcX", лол). Для запуска вполне хватит обычного JNGP с включённымы JassHelper'ом и cJass (без оптимизации скрипта карты).
Запускаем, жмём ESC, тыкаем мышкой, тестируем. Геймплея в карте нет, только демонстрация управления.
Если у кого-нибудь есть возможность протестировать по сети - будет круто, напишите в ЛС/тему, и я закину тест-кейсов.
Да-да, код выглядит ужасно и всё такое. Потом почищу, наверное.
Для того, чтобы всё было красиво, нужно ещё интерфейс заменить.
3
30
7 лет назад
3
Недавно пообщался с одним чуваком, и в разговоре выяснилось, что его зовут Гора Комментов. Больше как-то не связывались, и я хз, где он сейчас, но уверен, что на этом сайте его найти не получится при всём желании
0
29
7 лет назад
0
Просто не осталось здесь таких же азартный гуру jass кода, которым не лень скачать и посмотреть что там внутри.
0
30
7 лет назад
0
alexprey, окей, буду текстом код закидывать
:D
2
13
7 лет назад
2
окей, буду текстом код закидывать
Вполне здравая мысль же, кидай под кат код. Считаю это внегласным правилом.
Алсо, у тебя файл убежал.
0
30
7 лет назад
0
NekoriDes, я его сам выпилил временно =)
0
35
7 лет назад
0
так назад верни, быстро)
а гора комментов потому что наработка в аду с точки зрения навигации
вот невнятные модельки сотнями комментируют
0
30
7 лет назад
0
ZlaYa1000, отрефакторю и закину обратно, да. Сейчас душа лежит героя допилить =)
2
24
7 лет назад
2
а гора комментов потому что наработка в аду с точки зрения навигации
Ну я вот почитал, посмотрел, файла не увидел, кода не увидел, подумал "о, да я же делал такое в своей недоделаной карте, только дамы легкого поведения иначе одеты были" и прошел мимо т.к. мне это уже давно не интересно, максимум любопытно было глянуть насколько отличается от моей давней реализации. А сколько нибудь интересного срача диалога здесь не предвидится т.к. школоте это не нужно в виду сложности сабжа, а все остальные и сами в состоянии свою альтернативу сварганить, если бы им это было нужно.
0
30
7 лет назад
0
Вот это версия, которую я заливал. Она хорошо инкапсулирована и, хотя и рассчитана на строго определённую архитектуру карты (глобальный таймер, запускающий поток обработки игры N раз в секунду), показала себя достойно.
Сейчас сильно перепилил, всё красиво делаю, без костылей и с максимально адекватной логикой внутри самой системы. В свободное время учусь прогать таким изощрённым образом =)
Загруженные файлы
6
24
7 лет назад
6
В свободное время учусь прогать таким изощрённым образом =)
Сверлильщик зубов дракона через задний проход, третьего разряда.
0
30
7 лет назад
Отредактирован Clamp
0
prog, так нет же. Если глянуть на мой код, то там из нативных типов используются только int, float, bool, string, timer, trigger, причём таймер единожды для всей карты, а триггеры только для чтения инпата юзеров. Всё взаимодействие с UI, где невозможно обойтись без хендлов, инкапсулировано в максимально компактные библиотеки, которые работают через абсолютно адекватное API.

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

Ну а так да, конкретно этот кусок - велосипед.
0
24
7 лет назад
0
Clamp, полноценного ООП в джасе не запилить, только ООП-подобные костыли. Опыт по поведению конкретных движков и компиляторов, порой весьма своенравных, тоже не получить.
0
30
7 лет назад
0
prog, а кто сказал, что во главе угла должно стоять ООП?
Кроме того, независимо от внутренней логики работы vJass написанные на нём объектные модели работают адекватно, хотя и имеют некоторые ограничения в реализации. Почему бы и не считать это нормальным ООП? Темплейтов нету?
0
24
7 лет назад
Отредактирован prog
0
Почему бы и не считать это нормальным ООП? Темплейтов нету?
Полиморфизм, явный и неявный тайпкастинг, интерфейсы, абстрактные классы?
0
30
7 лет назад
Отредактирован Clamp
0
Полиморфизм
раскрыть
type agent  extends handle
type widget extends agent
type unit   extends widget
type item   extends widget
© common.j

// For example
native GetWidgetLife takes widget whichWidget returns real
void foo(unit U, widget W) {
    GetWidgetLife(W);   // Valid usage
    GetWidgetLife(U);   // Valid usage as well 
}
Чем не полиморфизм?
В структурах при использовании наследования можно передавать дочерний тип вместо родительского.

явный и неявный тайпкастинг
Под явный легко ложатся все нативные функции A2B(), кроме того, никто не запрещает писать кастомный функционал приведения типов (I2B(), например). При использовании структур всякие очевидные .toString().
К неявному можно отнести взаимозаменяемость int и float в некоторых ситуациях. При использовании структур vJass они очевидным образом кастятся в int.

интерфейсы

абстрактные классы
Вот с этим довольно туго, надо признать, только интерфейсы
0
24
7 лет назад
Отредактирован prog
0
Clamp, ок, значит полиморфизм и интерфейсы есть, были с ними проблемы в тех версиях v-jass которые мне на глаза попадались, а потом я забил.
А есть тайпкастинг между структурами, не требующий реализации дополнительных методов? От одного структурного типа к другому, если типы совместимые. С жесткой проверкой совместимости типов, а не через универсальный инт, офк.
Что касается абстрактных классов - не критично, особенно при наличии интерфейсов и возможности по работать напильником.
Да, признаю, какое-никакое подобие ООП в наличии, раньше хуже было.

Но есть же еще вторая часть в моем сообщении, которая о получении специфичного опыта взаимодействия со средой (не в смысле IDE, а в более общем). В невозможном идеале среда обучения на 100% совпадает с будущей средой реального применения - это позволяет использовать весь спектр полученных навыков. На втором месте - разнообразие различных актуальных сред на этапе обучения, что повышает шансы попасть в ситуацию из предыдущего пункта, а также добавляет кучу материала для анализа и сравнения, на чем можно здорово выехать в ряде ситуаций. Ну и только после этого идут специфичные среды вроде вара3, ценность которых именно в специфичности и расширении кругозора.
0
30
7 лет назад
Отредактирован Clamp
0
От одного структурного типа к другому, если типы совместимые.
При использовании наследования и при работе с общими интерфейсами так и есть.

о получении специфичного опыта взаимодействия со средой
В целом - да, это справедливое замечание. Тем не менее, мой опыт показал, что алгоритм - вещь платформонезависимая, следовательно, нет никакой разницы, в какой среде алгоритм реализовывать, главное правильно определить уровень абстракции.
Ну и я всё-таки не только в вц что-то делаю, не надо совсем уж так обобщать =(
0
24
7 лет назад
0
При использовании наследования и при работе с общими интерфейсами так и есть.
В обе стороны?

Относительную универсальность алгоритмов, паттернов и наборов принципов вроде SOLID и GRASP никто оспаривать не собирается, я говорю исключительно об эффективности использования времени в ходе практической реализации алгоритма.
2
30
7 лет назад
2
prog, написание на Jass доставляет мне некое удовольствие, хотя я даже не могу описать его причину :3
Одним из его аспектов является то, что весь код я пишу в Sublime Text 3, и почти всегда при переносе в редактор всё компилится с первой попытки. Как по мне, так это дорогого стоит!
0
24
7 лет назад
0
Clamp, каждый волен делать со своим временем что ему заблагорассудится, я просто объяснял свою точку зрения - почему я считаю это занятие достойным третьего трудового разряда по сверлению зубов дракона через его же анус.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.