-
AncientPenguin | Дата: Среда, 01-08-2012, 03:30:25 | Сообщение # 1 |
загрузка наград ...
Группа: Избранные
Сообщений: 449
Репутация: 526
Статус: Не на сайте
|
Уроки JASS Основы синтаксиса, урок № 1 “Переменные”.
Вступление.
Для работы с jass’ом достаточно обычного word editor’a, но я настоятельно рекомендую скачать Jass New Gen Pack 5 extreme edition. Именно эта версия необходима для работы cjass’a (прим. для vjass’a сойдет любой JNGP), даже если вы не собираетесь учить cjass, на нем написано много систем и для их импорта вам он потребуется. Объяснять что такое переменная, думаю, смысла нет т.к. те, кто решил изучить jass, наверняка уже копались в редакторе переменных и знают что это.
Область видимости переменных
Область видимости переменной это то, откуда можно пользоваться этой переменной. Бывает два разных вида:
1)Глобальные переменные – переменные, которые можно использовать в любом месте в пределах карты. Это и есть те переменные, которые создаются в редакторе переменных. Переменные созданные в редакторе переменных имеют приставку udg_ т.е. если вы создадите в редакторе переменных переменную с названием point, то на самом деле она будет называться udg_point.
2)Локальные переменные – это переменные, которые можно использовать только внутри функции, в которой они были созданы. Они создаются в момент вызова функции и уничтожаются, когда функция заканчивает свою работу. Создать локальную переменную можно следующим образом:
Code local <тип переменной> <имя переменной> local integer i local unit u
Имя переменной может содержать буквы, цифры и знак подчеркивания, но начинаться должно обязательно с буквы.
Присвоение значения переменным
Для присвоения значений переменным требуется напечатать вот что:
Code set <имя переменной> = <значение> set I = 10
Можно присваивать значение переменным при создании:
Массивы
Массив это набор переменных одного типа, для объявления массива используется ключевое слово array:
Code local <тип переменной> array <имя переменной> local integer array numbers
Для присвоения значения ячейки массива:
Code set <имя переменной>[<номер ячейки>] = <значение> set numbers[0] = 12 set numbers[3] = 65
Нумерация ячеек массива начинается с 0. Максимально число ячеек 8192 (не забываем, что начинается с 0, так что последняя ячейка 8191-ая). Для глобальных массивов нужно при создании указывать размер, локальные же всегда имеют 8192 ячейки.
Типы переменных
Типы переменных можно разделить на 2 группы:
1)Простые типы:
integer – целочислительная real – реальная boolean – не знаю как это адекватно перевести на русский поэтому просто буль. =) Может принимать только 2 значения true (истина) и false (лож). String – строка
прим. для перевода значений из одного типа в другой есть специальные функции R2I (real to integer), I2R (integer to real), I2S (integer to string), R2S (ну думаю догадаетесь)
2)Переменные-объекты – это все остальные типы переменных (unit, effect, location etc…). В отличии от простых типов, они хранят не значение, а ссылку на объект в памяти. Эти переменные необходимо правильно удалять иначе в памяти остается мусор и когда мусора становится слишком много, игра начинает тормозить. Сначала необходимо удалить объект из памяти специальной функцией. Для каждого типа есть своя функция которая начинается либо с Remove либо с Destroy (RemoveUnit, DestroyEffect…). После того как удалили объект необходимо обнулить ссылку на него иначе от нее тоже останется мусор. Делается это так:
прим. null означает нуль или ничего.
Обнулять ссылки необходимо только для локальных переменных, т.к. при выходе из функции вы уже не сможете обратиться к локальной переменной и соответственно присвоить ей другое значение (другую ссылку на объект) тоже не сможете.
прим. Юниты и декорации при смерти удаляются из памяти (но не мгновенно).
Заключение
Возможно кое-что (а может и много чего) из написанного новичку покажется непонятным, но это не беда. Сейчас главное усвоить информацию про локальные переменные и запомнить на будущее, что переменные-объекты могут нагадить в память.
Домашнее задание
Переварить сей священный манускрипт. Задания начнутся после того пройдем основы синтаксиса (еще примерно 2 урока).
|
| | |
-
MortarEnemy | Дата: Среда, 01-08-2012, 10:18:08 | Сообщение # 2 |
Ополченец
загрузка наград ...
Группа: Пользователи
Сообщений: 93
Репутация: 33
Статус: Не на сайте
|
Quote (AncientPenguin) Jass New Gen Pack 5 extreme edition Карты от него не открываются (в самом варкрафте) в версиях 1.24,1.25,1.26. Если я не прав, скиньте мне ту версию, в которой Вар способен открыть его карты. А урок понятный. Я пытался читать уроки из интернета, ничего не понял.
|
| | |
-
AncientPenguin | Дата: Среда, 01-08-2012, 16:05:42 | Сообщение # 3 |
загрузка наград ...
Группа: Избранные
Сообщений: 449
Репутация: 526
Статус: Не на сайте
|
Quote (MortarEnemy) Карты от него не открываются (в самом варкрафте) в версиях 1.24,1.25,1.26. Если я не прав, скиньте мне ту версию, в которой Вар способен открыть его карты.
Я все в нем делаю и все прекрасно открывается, ссылку кинул в лс. Только антивирус на время скачки и разархивирования отключи.
|
| | |