[Уроки JASS]Основы синтаксиса, "Переменные" - Wc3-Maps Форум













[ Главная · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Strateg, Melissa  
[Уроки JASS]Основы синтаксиса, "Переменные"
-
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


Можно присваивать значение переменным при создании:

Code
local real Pi = 3.14


Массивы


Массив это набор переменных одного типа, для объявления массива используется ключевое слово 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…). После того как удалили объект необходимо обнулить ссылку на него иначе от нее тоже останется мусор. Делается это так:

Code
set myeffect = null


прим. null означает нуль или ничего.

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

прим. Юниты и декорации при смерти удаляются из памяти (но не мгновенно).

Заключение


Возможно кое-что (а может и много чего) из написанного новичку покажется непонятным, но это не беда. Сейчас главное усвоить информацию про локальные переменные и запомнить на будущее, что переменные-объекты могут нагадить в память. biggrin

Домашнее задание


Переварить сей священный манускрипт. Задания начнутся после того пройдем основы синтаксиса (еще примерно 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. Если я не прав, скиньте мне ту версию, в которой Вар способен открыть его карты.


Я все в нем делаю и все прекрасно открывается, ссылку кинул в лс. Только антивирус на время скачки и разархивирования отключи.
 
  • Страница 1 из 1
  • 1
Поиск:
Рейтинг@Mail.ru
Яндекс.Метрика

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