Warden
:::...
offline
Опыт:
21,706Активность: |
Как изучить JASS
В этой статье я попытаюсь раскрыть самый актуальный вопрос среди начинающих картостроителей. Суть этой статьи в том чтобы подсказать вам, как правильно изучить язык программирования JASS самостоятельно, но все же объяснить основные субъекты для более быстрого изучения.
Изучения JASS значительно расширит ваши способности в картостроении. Помимо этого будет развивать ваше алгоритмическое мышление, углубит познания технического английского языка и позволит с большей легкостью изучать другие языки программирования (Проверено на себе!) JASS – это несложный, интуитивно понятный компилятор не требующий особых теоретических понятий о нем. Следует заметить, что он во многом схож с одним из самых полюбившихся человечеству языку программирования – Visual Basic. Мне было очень легко изучать VB, после того как я изучил JASS. Код JASS записывается в “конвертированном в текст” триггере, в действии триггера ”CustomScript” и в специально выделенной секции нестандартного кода (Custom Script Code) В этой статье я рассчитываю на ваше интуитивное мышление и не углубляюсь в детали… Примечание : Для самостоятельного изучения JASS вам будет необходима программа JassCraft (Можно скачать в базе XGM), а также англо-русский переводчик ( или словарь =) ) если с английским у вас не очень… Часть 1
Для начала следует рассказать об структуре функций JASS и о его операторах. Простейшая функция JASS выглядит примерно так: Цитата:
Функция может принимать значения с помощью оператора “takes” и возвращать с помощью оператора “returns” Integer и string – это типы переменных. Каждый субъект вара имеет свой тип (type): Типы перечислены в файле Common.j (см. в программе JassCraft) Существуют еще расширенные типы, такие как widget и handle – к widget относятся все объекты, имеющие жизнь (Юнит, предмет, разрушаемое), а к handle все объекты (Юнит, таймер, триггер, предмет, молния, точка и.т.д) Указанная выше функция принимает значение типа integer (целочисленная) и возвращает соответствующую ей строку. Чтобы понять что к чему достаточно перевести на русский язык нужный участок кода и все станет понятно (например if – если, else –иначе, end – конец. Так получаются операторы elseif, endfunction, endif) Важнейшим субъектом JASS являются локальные переменные. Локальные переменные действуют только в пределах одной функции, а глобальные (создаются в редакторе переменных) в пределах всего сценария. Локальная переменная состоит из оператора local, типа(type) и названия. Вот так выглядит объявление локальной переменной: Цитата:
К примеру если мы хотим забить в переменную значение функции, то мы просто обращаемся к ней: Цитата:
в переменную s будет возвращено значение функции Function1 (указанной выше) соответствующее числу 1 (то есть – ”string1”) Для того чтобы проверить – выведем значение переменной 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) Здесь я думаю все ясно, осталось только объяснить, как работают циклы… Примитивный цикл выглядит примерно так: Цитата:
(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. Если вам не помогла статья не опускайте руки – используйте первый совет до тех пор, пока не поймете. Надеюсь, вам хоть как-то помогла моя многообещающая статья =) |
|||||
01.12.2007, 10:49 | #1
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Sargeras
Лидер "Двух Королевств"
offline
Опыт:
21,363Активность: |
Warden, зачем? Сергей и так всё по максимуму написал в своей статье. Это тот же самый материал, только нет полностью и в довольно сжатом виде.
Sargeras добавил: В принципе слабовато, ибо я не уверен, что новичок в Jass'е сможет много извлечь из этой статьи. |
01.12.2007, 11:05 | #2
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
HackeR
Art Of Mindgames
offline
Опыт:
7,688Активность: |
Цитата:
+1 --- на своем примере |
|
01.12.2007, 11:15 | #3
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Warden
:::...
offline
Опыт:
21,706Активность: |
Sargeras - ну мне делать нечего было, вот и написал =)
Цитата:
Не согласен... да мне пох. =) |
|
01.12.2007, 11:42 | #4
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
фтопку. |
01.12.2007, 11:46 | #5
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
df Hunter
Нападатель
offline
Опыт:
5,749Активность: |
варден решил быть 1ым человеком, написавшим статью этой зимой =) |
01.12.2007, 13:04 | #6
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Visitor
offline
Опыт:
1,343Активность: |
Цитата:
Совершенно согласен.... |
|
01.12.2007, 13:17 | #7
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Toadcop
offline
Опыт:
53,013Активность: |
омг а чё сегодне он запостил О_о !? ... ужос просто жопа =)
если честно Варден всегда отличалса лузерством =) в барахолку кидал всегда какой то крап который подходит на категорию лолзор как видно он решил продолжить эту традиции и с "статьёй". ну грубо сказать это критика по твоему "джасс скилу" по настоящему ты куда нииже среднекового буржуйского джассера. просто фичя в том не как ты это делаеш а что =) имхо мне больше всего статья Какоса понравилась Сергея и Раза не очень -_- мне интерпритация какоса больше по духу у Сергея написано как бы для нубов каких то =) т.е. не джасс а как бы вообще =) ну как говоритьса у каждого своё мнение и т.п. =) Цитата:
и имхо Джасс Крафт сосёт =) он впринципе некогда не рулил =) а ну вообщем на кампах куча туторов путёвых если есть среднинький скилл англ то го туда ^^ (сейчас он отдыхает =)) |
|
01.12.2007, 16:49 | #8
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
exploder
iOS zealot
offline
Опыт:
19,394Активность: |
Если уж писать статьи на тему "Выучи джасс за 24 часа", надо подразумевать что статью будет читать разбирающийся в GUI маппер и проводить имеено такую аналогию сравнивать GUI и jass конструкции, расписать отличия pure code от gui и чем он лучше gui... Если же учить джасс с нуля, без знания GUI, то для этого потребуются более развернутые статьи... |
01.12.2007, 17:35 | #9
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Toadcop
offline
Опыт:
53,013Активность: |
exploder за 24 часа джасс норм не освоить хоть ты даже опытный програмист. точней минимально можно и с любой статьи научитьса а вот как норм состовлять алгоритмы... =)
|
01.12.2007, 18:19 | #10
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
exploder
iOS zealot
offline
Опыт:
19,394Активность: |
Статья как раз не про алгоритмы. Положим чтобы программировать на GUI, тоже надо руководствоватся алгоритмами. Мое мнение - статьи про быстрое изучение джасс надо писать с позиции - аналогия джасс коснтрукий GUI конструкицям и (!) чем джасс лучше GUI, а имеено про универсальность и компактность, которые можно достигнуть используя локальные переменные, РБ, кэш и т.д. |
01.12.2007, 19:58 | #11
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
Цитата:
оно так и есть... у сергея обучение жассу на основе гуишных тригов. причем! для большинства маперов это то что надо! |
|
01.12.2007, 20:17 | #12
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Sargeras
Лидер "Двух Королевств"
offline
Опыт:
21,363Активность: |
Цитата:
Согласен. Я бы сказал, что это сбор теоретических сведений для jass'а, написанный для продвинутых картостроителей. Если новичок захочет изучить jass, то, на мой взгляд, целессобразно всё досканально ему разжёвывать. Цитата:
Ну вот здесь, увы, не согласен, потомуч то любая статья,независимо от того, плохая она или хорошая, достойна прочтения и уважения. Цитата:
В таком случае я решил стать единственным человеком, который собирается добиться отправления своих статей на сайт.)))) Sargeras добавил: За зиму этого года.))) |
|||
03.12.2007, 09:37 | #13
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
BlackStuff
offline
Опыт:
1,656Активность: |
Warden, эта статья нужна. Не думаю, что новички будут ровняться на Toadcopа, ему понравилась другая статья, но это не значит что та статья понравится другим больше твоей или Сергеевской. Например, я читаю всё подряд и что-то полезное всё равно для себя нахожу.
Поэтому выражаю тебе свою благодарность за эту статью. Мне она пригодится в изучении JASS, чтобы всё расставить на свои места, она помогает структуризовать начальные знания. |
03.12.2007, 09:38 | #14
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
S
offline
Опыт:
43,833Активность: |
Статью фтопQ, обьясняю почему -
1) Есть статья Сергея, довольно большая. 2) Пока ты не ЗАХОЧЕШЬ учить джасс и пока тебе это будет не надо . 3) Видно же что статья написана для опыта - как раз еще 250-300 опыта добить сообщениями останется =/ 4) ИМХО, чтобы писать на джассе тебе должно нравится это делать. 5) null по-моему не хэндл... :P |
03.12.2007, 10:54 | #15
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Sargeras
Лидер "Двух Королевств"
offline
Опыт:
21,363Активность: |
Цитата:
Я ещё раз говорю: для полного изучения jass этой статьи не достаточно. Она, как таковая, не раскрывает всю суть этого языка, не даёт расширенное понятие элементов jass'а, а также требует достаточно го высокого знания триггеров + может быть, программистское образование. Цитата:
Опыт вообще не играет какой-либо роли на форуме. |
||
03.12.2007, 11:07 | #16
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
S
offline
Опыт:
43,833Активность: |
Цитата:
1) +1 2) Ну... кроме смены ника, сумрака (что я считаю бессмысленным)... =/ ИМХО, Статья Сергея лучше, Варден, не обижайся. |
|
03.12.2007, 11:24 | #17
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|