Переменные и массивы хранят 6 цифр установленного числа и 3 цифры после десятичного числа. Есть предопределенные переменные, которые могут использоваться функциями, чтобы изменить параметры игры или дисплея. Вы найдете определение этих предопределенных переменных в следующей главе. Дополнительное любое число переменных может быть определено, для того чтобы хранить числа в произвольных целях, например в анимационных циклах.
Это определение создает переменную с данным названием. Альтернативная вторая линия устанавливает переменную в данное значение по умолчанию.
var test; // объявите переменную "test"
var gegner = 5; // объявите переменную "Gegner" и назначьте её значение 5
var video_mode = 6; // переопределите предопределенную переменную для того, чтобы запустить в разрешающей способности 640x480
Переменные могут быть переопределены в любом месте в пределах скрипта. Только вот данное определение использующее, например:
var v1 = 7; ... var v1 = 13;создает переменную v1 с начальным значением 13. Длина переопределенных массивов изменяться не должна.
Переменные определенные вне функций, называются глобальными переменными (global variable). Переменные помещённые в функциях, называются локальными переменными (local variable). Локальные переменные работают только в пределах функции и не распознаются снаружи. Если глобальная переменная существует с тем же самым названием как локальная переменная, то локальная переменная имеет полный приоритет над той функцией, в которой она присутствует.
function beep_seven_times() { var i = 0; // определите и инициализируйте локальную переменную while (i < 7) { i += 1; beep; wait(1); // локальная переменная сохраняет значение и ждёт } }
Если много команд выполняются одной и той же функцией, которая обычно работает с действиями объекта, каждый случай использует свой собственный независимый набор локальных переменных. Поскольку переменные всегда инициализируются (по умолчанию к 0), нужно знать что, если вы определяете локальную переменную в цикле, она инициализируется при каждом повторении цикла, и вероятно то, что переменная будет являеться не тем значением, которое вы определяли. Следовательно, определяйте локальные переменные всегда в начале функции.
Локальные переменные работают немного медленнее чем глобальные.
Если Вы группируете несколько переменных вместе, то получаете массив - array :
var my_array[5] = 0, 10, 20, 30, 40;
Это создает массив 5 из чисел, к которым можно обратиться в выражениях через my_array[0]. my_array[4]. В выражениях номер в скобках [] - Индекс (index) - говорит, что в массиве присутствует 5 значений. Обратите внимание, что нет никакого числа в my_array[5], поскольку индекс начинается с 0. Массив может иметь любую длину, но максимум 500 заданных значений можно дать в файле сценария. Если Вы нуждаетесь в большем колличестве, то храните значения в отдельном текстовом файле, который используете для того, чтобы заполнить массив через команду file_ .. .
Тройные массивы называют вектором - vector. Это массивы содержащие схожие по командам значения, например .x, .y, .z, или .pan, .tilt, .roll, или .blue, .green, .red. Переменную величину, данную без индекса, рассматривают первым номером массива (my_array == my_array[0]). Вот пример:
my_vec.x ==
my_vec.pan == my_vec.blue == my_vec[0] == my_vec
my_vec.y
== my_vec.tilt == my_vec.green == my_vec[1]
my_vec.z ==
my_vec.roll == my_vec.red == my_vec[2]
Использование таких сокращений создаёт лучше читаемые и более быстрые сценарии, потому как индекс не задействован во время выполнения. К длине массива можно обратиться через его параметр длины. Преимущество использования массива, по сравнению с определением отдельных переменных, состоит в том, что любое числовое выражение также можно задать как индекс.
temp = 0; while (temp < my_array.length) { my_array[temp] = temp; // устанавливает массив в 0,1,2,3... и т.д. temp += 1; }
Внимание, индекс никогда не должен привышать своего максимального зночения, 4 в этом примере. Иначе будет выдано сообщение об ошибках.
Массивы могут также быть определены, как локальные, подобно локальным переменным, но только с измерением 3. Локальные массивы не могут быть инициализированы (они всегда инициализируются к 0). Локальные массивы и переменные нельзя передать как '&' векторный параметр для других функций, хотя они могут использоваться в векторных командах.
Многомерные массивы быть определены, умножая индекс на ширину массива. Предположим, что вы нуждаетесь в двухмерном массиве, например сетка 10*20. Это будет так:
var heightmap[200]; // 200 = 10*20
Значение массива в позиции (j, i):
heightmap[j*20 + i] // j = 0..9, i = 0..19
С некоторыми специальными определениями переменных, переменные при сохранении или загрузке игры выглядят следующим образом:
my_array.info = ON; game_SAVE("state",0,sv_info); my_array.info = OFF;
сохраняет переменную my_array в файл STATE0.SAV. Флаг самой информации не сохранен или не загружен, это всегда последнее значение.