Типы данных и переменные

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

Язык сценариев WME не является жёстко типизированным языком. Это означает, что Вам не требуется указывать тип переменной в момент её создания. Тип переменной зависит от значения, которое она хранит.

В WME используются следующие типы данных:

 

Логический (Boolean)

Переменные этого типа могут принимать только два значения: true (истина) или false (ложь).

 

Строковый (String)

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

 

Целочисленный (Integer)

Значениями переменных этого типа являются целые числа (..., -2, -1, 0, 1, 2, ...)

 

Числа с плавающей точкой (Float)

Значениями переменных этого типа являются десятичные дроби.

 

Пустой тип данных (Null)

Переменная этого типа может принимать только одно значение: null. Это означает, что переменная не содержит никакого значения или объекта. Таким образом, Вы можете очистить память, присвоив переменной значение null.

 

Также переменные делятся в WME на три типа: локальные, глобальные и константы.

Локальные переменные

Эти переменные объявляются с помощью ключевого слова var и их областью видимости является блок кода, в котором они были объявлены.

Пример:

var MyVariable;
var MyInitializedVariable = 10;

 

Глобальные переменные

Эти переменные объявляются с помощью ключевого слова global и они видимы во всех сценариях проекта. Поэтому они используются для хранения значений состояния игры.

Пример:

global MyGlobal;
global MyInitializedGlobal = 10;

 

Константы

Константы объявляются с помощью ключевого слова const и они видимы во всех сценариях проекта. Константы подобны глобальным переменным лишь с одним отличием: их значения не очищаются вызовом метода Game.Reset().

Пример:

const DI_UP = 0;

 

 

Предопределённые переменные Game и this

В WME существуют две специальные переменные Game и this. Они всегда доступны в Ваших сценариях.

Переменная Game является ссылкой на главный объект игры, у которого есть собственный набор методов и свойств.

Переменная this является ссылкой на объект, которому принадлежит текущий сценарий (сценарии в WME всегда привязаны к какому-либо объекту).

 

Переменные как объекты

Все переменные в WME являются объектами. Это означает, что Вы можете задать как значение самой переменной, так и значения её свойств. Все нижеприведённые примеры являются допустимыми в WME:

var MyVariable;
MyVariable.SomeProperty = 10;
MyVariable.AnotherProperty = "строковое значение";
MyVariable.LogProperty = true;
MyVariable[0] = 20;
MyVariable[1] = 30;
MyVariable["YetAnotherProperty"] = 40;

Обратите внимание на форму записи MyVariable[0]. Таким простым способом Вы можете создавать массивы (они могут быть известны Вам из других языков программирования) без предварительного объявления.

Следует помнить, что вместо объявления десятков глобальных переменных будет гораздо лучше сгруппировать связанные по смыслу параметры в один объект. Например: вероятно, Вам понадобится множество переменных состояния для каждой сцены. Вроде таких, как «Открыто ли окно в сцене XXX?», «посетил ли персонаж сцену YYY?». Рекомендуется объявлять по одной глобальной переменной на каждую сцену и сохранять в ней все её состояния.

Пример:

global StateMyScene;
StateMyScene.VisitedByPlayer = false;
StateMyScene.IsWindowOpen = true;

Эти соглашения используются в демо-игре, а также поддерживаются стандартными шаблонами, являющимися частью среды разработки WME.

 

Игровые объекты

Помимо обычных переменных, Вы будете использовать специальные, которые содержат ссылки на игровые объекты (сцены, персонажи, объекты (entities), окна и т. д.). У каждого из этих объектов есть свой собственный набор методов и свойств, оказывающих влияние на их поведение. Например, задав значение свойства X персонажа, Вы заставите изменить его свою позицию на экране. А чтобы заставить его говорить, нужно вызвать метод Talk.

Пример:

var actor = Game.LoadActor("actors\molly\molly.actor");
actor.SetPosition(100, 200);
actor.Talk("Бла-бла.");
actor.Active = false;

 

В приведённом примере выполняются следующие действия:

1)   объявляется локальная переменная actor
2)   вызывается метод LoadActor объекта Game, возвращающий ссылку на объект персонажа, которая сохраняется в переменной actor
3)   вызывается метод SetPosition объекта actor, чтобы изменить позицию персонажа на экране
4)   вызывается метод Talk объекта actor, чтобы персонаж сказал "Бла-бла."
5)   устанавливается значение свойства Active в false, чтобы убрать персонаж с экрана

Внимание: полный список игровых объектов, их методов и свойств приведён в этой части руководства.