Переменные

Переменные и массивы хранят 6 цифр установленного числа и 3 цифры после десятичного числа. Есть предопределенные переменные, которые могут использоваться функциями, чтобы изменить параметры игры или дисплея. Вы найдете определение этих предопределенных переменных в следующей главе. Дополнительное любое число переменных может быть определено, для того чтобы хранить числа в произвольных целях, например в анимационных циклах.

var name;
var name = number;

Это определение создает переменную с данным названием. Альтернативная вторая линия устанавливает переменную в данное значение по умолчанию.

Замечания:

Как все другие объекты C-Script, переменные никогда не должны иметь названий, которые уже определены, например: red, green, blue, x, y, z, pan, tilt, roll и так далее. Иначе будут сообщения об ошибках.
Компьютеры всегда выполняют вычисления с конечной точностью. Gamestudio имеет диапазон -999999.999.. +999999.999 с точностью 0.001. Например, умножение на 100 имеет погрешность 0.001/100 = 0.001 %, в то время как раздел 0.01.

Пример:

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 name[n];
var name[n] = value_1, value_2, ... value_n;

Переменная, которая содержит в себе n кол-во других переменных.
Такая много-переменная с числом называется массив (array). Число n обозначает длину массива.

Пример:

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

С некоторыми специальными определениями переменных, переменные при сохранении или загрузке игры выглядят следующим образом:

var_info name;

Создает переменную или массив, который сохраняет, когда sv_info установлен для команды game_save.
Информационные переменные содержат пользовательские настройки параметров игры, которые будут загружены в самом начале игры, и не должны изменяться при загрузке предварительно сохраненной игры.
Вы можете динамически переключать состояние информации переменной, устанавливая параметры флага информации ON или OFF:

Пример:

my_array.info =      ON;
game_SAVE("state",0,sv_info);
my_array.info =  OFF;

сохраняет переменную my_array в файл STATE0.SAV. Флаг самой информации не сохранен или не загружен, это всегда последнее значение.

var_nsave name;

Практически такая же как var_info, но эта переменная не сохраняет. Используйте этот тип переменных для маркеров DLL и звуковых маркеров, которые не должны быть записаны поверх команды game_loa.
Используются технологии uCoz