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

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

 
Warden
:::...
offline
Опыт: 26,106
Активность:
Как изучить JASS
В этой статье я попытаюсь раскрыть самый актуальный вопрос среди начинающих картостроителей. Суть этой статьи в том чтобы подсказать вам, как правильно изучить язык программирования JASS самостоятельно, но все же объяснить основные субъекты для более быстрого изучения.

Изучения JASS значительно расширит ваши способности в картостроении. Помимо этого будет развивать ваше алгоритмическое мышление, углубит познания технического английского языка и позволит с большей легкостью изучать другие языки программирования (Проверено на себе!)

JASS – это несложный, интуитивно понятный компилятор не требующий особых теоретических понятий о нем. Следует заметить, что он во многом схож с одним из самых полюбившихся человечеству языку программирования – Visual Basic. Мне было очень легко изучать VB, после того как я изучил JASS.

Код JASS записывается в “конвертированном в текст” триггере, в действии триггера ”CustomScript” и в специально выделенной секции нестандартного кода (Custom Script Code)

В этой статье я рассчитываю на ваше интуитивное мышление и не углубляюсь в детали…

Примечание : Для самостоятельного изучения JASS вам будет необходима программа JassCraft (Можно скачать в базе XGM), а также англо-русский переводчик ( или словарь =) ) если с английским у вас не очень…

Часть 1

Для начала следует рассказать об структуре функций JASS и о его операторах.

Простейшая функция JASS выглядит примерно так:

Цитата:
function Function1 takes integer i returns string
if i == 1 then
return “string1”
elseif i == 2 then
return “string2”
else
return “string3”
endif
endfunction


Функция может принимать значения с помощью оператора “takes” и возвращать с помощью оператора “returns”

Integer и string – это типы переменных. Каждый субъект вара имеет свой тип (type): Типы перечислены в файле Common.j (см. в программе JassCraft)

Существуют еще расширенные типы, такие как widget и handle – к widget относятся все объекты, имеющие жизнь (Юнит, предмет, разрушаемое), а к handle все объекты (Юнит, таймер, триггер, предмет, молния, точка и.т.д)

Указанная выше функция принимает значение типа integer (целочисленная) и возвращает соответствующую ей строку.

Чтобы понять что к чему достаточно перевести на русский язык нужный участок кода и все станет понятно (например if – если, else –иначе, end – конец. Так получаются операторы elseif, endfunction, endif)

Важнейшим субъектом JASS являются локальные переменные. Локальные переменные действуют только в пределах одной функции, а глобальные (создаются в редакторе переменных) в пределах всего сценария.

Локальная переменная состоит из оператора local, типа(type) и названия.

Вот так выглядит объявление локальной переменной:

Цитата:
local string s = “string”


К примеру если мы хотим забить в переменную значение функции, то мы просто обращаемся к ней:

Цитата:
local string s
set s = Function1(1)


в переменную s будет возвращено значение функции Function1 (указанной выше) соответствующее числу 1 (то есть – ”string1”)

Для того чтобы проверить – выведем значение переменной s на экран:

Цитата:
local string s
set s = Function1(1)
call BJDebugMsg(s)


(call – оператор обращения к функции)
(функция BJDebugMsg – функция blizzard.j выводящее строку на экран в виде сообщения)

Локальные переменные могут быть объявлены только в начале кода функции!
Практический пример найдете в прикрепленном файле 001.w3x

Часть 2

Все функции, типы и переменные вара вы найдете в файле common.j. В файле blizzard.j храняться функции используемые триггерами (Jass-еры как правило их редко использую, по соображениям оптимизации), но т.к они все равно основаны на функциях common.j, то используйте их только в крайнем случае.

в common.j все расставлено по полочкам и потеряться в нем вы не должны. Заучивать функции не требуется – используйте программу JassCraft или ищите их в файле common.j.

Вот список основных операторов вара, которые следует выучить:

if – открывает поток условия
endif – закрывает поток условия
else – открывает поток условия для случая если предыдущее условие не соответствует значению.
elseif – тот же else, используется для многократных алгоритмических веток
then – осуществляет переход от условия к его действиям
loop – открывает поток цикла
exitwhen – закрывает поток цикла при условии
endloop – закрывает поток цикла
local – оператор для объявления локальных переменных
nothing – нулевой тип – используется для операторов takes и returns
return – оператор возвращения значения функции (при нулевом значении останавливает поток функции)
call – оператор обращения к функции
function – оператор объявления функции
endfunction – закрывает поток функции
takes – оператор приема переменной в функцию
returns – оператор возвращения переменной в функцию
null – нулевое значение (handle)

Здесь я думаю все ясно, осталось только объяснить, как работают циклы…
Примитивный цикл выглядит примерно так:

Цитата:
local integer i = 1
loop
exitwhen i > 10
call BJDebugMsg(I2S(i))
set i = i + 1
endloop


(I2S – функция конверции числа в строку (существуют так же S2I, R2S, S2R, I2R, R2I и.т.д)

Он выведет числа от 1 до 10 на экран.
Подробнее:
Объявляем числовую переменную i равную 1, открываем цикл(loop), создаем условие выхода (exitwhen i > 10), выводим значение переменной i на экран, пополняем значение i на 1, закрываем поток цикла.

смотрите практический пример 002.w3x

Часть 3

Компилятор JASS очень “грубый”, и может выкинуть вас из редактора. Поэтому советую использовать проверку синтаксиса в программе JassCraft.

Теоретически это все, что вам нужно знать о JASS чтобы выучить его самостоятельно, поэтому напоследок я дам пару советов:

1. Самый лучший, быстрый и проверенный способ изучения языков программирования – это исходники (Конкретные примеры) – скачивайте наработки и смотрите как что сделано в них и вы быстро научитесь. (Этот совет относится не только к JASS)
2. Если вам не помогла статья не опускайте руки – используйте первый совет до тех пор, пока не поймете.

Надеюсь, вам хоть как-то помогла моя многообещающая статья =)
Прикрепленные файлы
Тип файла: w3x 001.w3x (7.3 Кбайт, 129 просмотров )
Тип файла: w3x 002.w3x (7.2 Кбайт, 140 просмотров )
Старый 01.12.2007, 10:49
Sargeras
Лидер "Двух Королевств"
offline
Опыт: 22,163
Активность:
Warden, зачем? Сергей и так всё по максимуму написал в своей статье. Это тот же самый материал, только нет полностью и в довольно сжатом виде.

Sargeras добавил:
В принципе слабовато, ибо я не уверен, что новичок в Jass'е сможет много извлечь из этой статьи.
Старый 01.12.2007, 11:05
HackeR
Art Of Mindgames
offline
Опыт: 7,688
Активность:
Цитата:
ибо я не уверен, что новичок в Jass'е сможет много извлечь из этой статьи.

+1 --- на своем примере
Старый 01.12.2007, 11:15
Warden
:::...
offline
Опыт: 26,106
Активность:
Sargeras - ну мне делать нечего было, вот и написал =)
Цитата:
В принципе слабовато, ибо я не уверен, что новичок в Jass'е сможет много извлечь из этой статьи.

Не согласен... да мне пох. =)
Старый 01.12.2007, 11:42
adic3x

offline
Опыт: 108,439
Активность:
  1. для новичко статья сергея в стопицот раз лучше (на своем примере ^^)
  2. вооббще отсутствует целостное повествование, у сергея написано связно, а тут куча правил без каких либо примеров, пояснений и т.д.
фтопку.
Старый 01.12.2007, 11:46
df Hunter
Нападатель
offline
Опыт: 5,749
Активность:
варден решил быть 1ым человеком, написавшим статью этой зимой =)
Старый 01.12.2007, 13:04
Visitor

offline
Опыт: 1,343
Активность:
Цитата:
для новичко статья сергея в стопицот раз лучше (на своем примере ^^)

Совершенно согласен....
Старый 01.12.2007, 13:17
Toadcop

offline
Опыт: 54,313
Активность:
омг а чё сегодне он запостил О_о !? ... ужос просто жопа =)
если честно Варден всегда отличалса лузерством =) в барахолку кидал всегда какой то крап который подходит на категорию лолзор как видно он решил продолжить эту традиции и с "статьёй".
ну грубо сказать это критика по твоему "джасс скилу" по настоящему ты куда нииже среднекового буржуйского джассера. просто фичя в том не как ты это делаеш а что =)

имхо мне больше всего статья Какоса понравилась Сергея и Раза не очень -_- мне интерпритация какоса больше по духу у Сергея написано как бы для нубов каких то =) т.е. не джасс а как бы вообще =) ну как говоритьса у каждого своё мнение и т.п. =)


Цитата:
null – нулевое значение (handle)
это не хендл =) это грубо сказать не арефмитический ноль ака "ничего" но вообщем в компе существуют тока цифры но это не важно =)

и имхо Джасс Крафт сосёт =) он впринципе некогда не рулил =)
а ну вообщем на кампах куча туторов путёвых если есть среднинький скилл англ то го туда ^^ (сейчас он отдыхает =))
Старый 01.12.2007, 16:49
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Если уж писать статьи на тему "Выучи джасс за 24 часа", надо подразумевать что статью будет читать разбирающийся в GUI маппер и проводить имеено такую аналогию сравнивать GUI и jass конструкции, расписать отличия pure code от gui и чем он лучше gui... Если же учить джасс с нуля, без знания GUI, то для этого потребуются более развернутые статьи...
Старый 01.12.2007, 17:35
Toadcop

offline
Опыт: 54,313
Активность:
exploder за 24 часа джасс норм не освоить хоть ты даже опытный програмист. точней минимально можно и с любой статьи научитьса а вот как норм состовлять алгоритмы... =)
Старый 01.12.2007, 18:19
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Статья как раз не про алгоритмы. Положим чтобы программировать на GUI, тоже надо руководствоватся алгоритмами. Мое мнение - статьи про быстрое изучение джасс надо писать с позиции - аналогия джасс коснтрукий GUI конструкицям и (!) чем джасс лучше GUI, а имеено про универсальность и компактность, которые можно достигнуть используя локальные переменные, РБ, кэш и т.д.
Старый 01.12.2007, 19:58
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
по духу у Сергея написано как бы для нубов каких то =) т.е. не джасс а как бы вообще =)

оно так и есть... у сергея обучение жассу на основе гуишных тригов. причем! для большинства маперов это то что надо!
Старый 01.12.2007, 20:17
Sargeras
Лидер "Двух Королевств"
offline
Опыт: 22,163
Активность:
Цитата:
2) вооббще отсутствует целостное повествование, у сергея написано связно, а тут куча правил без каких либо примеров, пояснений и т.д.

Согласен. Я бы сказал, что это сбор теоретических сведений для jass'а, написанный для продвинутых картостроителей. Если новичок захочет изучить jass, то, на мой взгляд, целессобразно всё досканально ему разжёвывать.
Цитата:
фтопку.

Ну вот здесь, увы, не согласен, потомуч то любая статья,независимо от того, плохая она или хорошая, достойна прочтения и уважения.
Цитата:
варден решил быть 1ым человеком, написавшим статью этой зимой =)

В таком случае я решил стать единственным человеком, который собирается добиться отправления своих статей на сайт.))))

Sargeras добавил:
За зиму этого года.)))
Старый 03.12.2007, 09:37
BlackStuff

offline
Опыт: 1,656
Активность:
Warden, эта статья нужна. Не думаю, что новички будут ровняться на Toadcopа, ему понравилась другая статья, но это не значит что та статья понравится другим больше твоей или Сергеевской. Например, я читаю всё подряд и что-то полезное всё равно для себя нахожу.
Поэтому выражаю тебе свою благодарность за эту статью. Мне она пригодится в изучении JASS, чтобы всё расставить на свои места, она помогает структуризовать начальные знания.
Старый 03.12.2007, 09:38
S

offline
Опыт: 43,833
Активность:
Статью фтопQ, обьясняю почему -
1) Есть статья Сергея, довольно большая.
2) Пока ты не ЗАХОЧЕШЬ учить джасс и пока тебе это будет не надо .
3) Видно же что статья написана для опыта - как раз еще 250-300 опыта добить сообщениями останется =/
4) ИМХО, чтобы писать на джассе тебе должно нравится это делать.
5) null по-моему не хэндл... :P
Старый 03.12.2007, 10:54
Sargeras
Лидер "Двух Королевств"
offline
Опыт: 22,163
Активность:
Цитата:
Warden, эта статья нужна. Не думаю, что новички будут ровняться на Toadcopа, ему понравилась другая статья, но это не значит что та статья понравится другим больше твоей или Сергеевской. Например, я читаю всё подряд и что-то полезное всё равно для себя нахожу.
Поэтому выражаю тебе свою благодарность за эту статью. Мне она пригодится в изучении JASS, чтобы всё расставить на свои места, она помогает структуризовать начальные знания.

Я ещё раз говорю: для полного изучения jass этой статьи не достаточно. Она, как таковая, не раскрывает всю суть этого языка, не даёт расширенное понятие элементов jass'а, а также требует достаточно го высокого знания триггеров + может быть, программистское образование.
Цитата:
3) Видно же что статья написана для опыта - как раз еще 250-300 опыта добить сообщениями останется =/

Опыт вообще не играет какой-либо роли на форуме.
Старый 03.12.2007, 11:07
S

offline
Опыт: 43,833
Активность:
Цитата:
Сообщение от Sargeras
Я ещё раз говорю: для полного изучения jass этой статьи не достаточно. Она, как таковая, не раскрывает всю суть этого языка, не даёт расширенное понятие элементов jass'а, а также требует достаточно го высокого знания триггеров + может быть, программистское образование.

Опыт вообще не играет какой-либо роли на форуме.


1) +1
2) Ну... кроме смены ника, сумрака (что я считаю бессмысленным)... =/
ИМХО, Статья Сергея лучше, Варден, не обижайся.
Старый 03.12.2007, 11:24

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

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

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

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



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