Интернет магазин китайских планшетных компьютеров



Компьютеры - Game Maker Language - Функции

09 мая 2011


Оглавление:
1. Game Maker Language
2. Библиотеки
3. Функции
4. Примеры скриптов
5. Критика



Game Maker содержит обширную библиотеку встроенных функций для обеспечения основной функциональности. Программист может создавать свои собственные скрипты, которые вызываются точно таким же способом, как и функции. Функции рисования в Game Maker используют Direct3D API. В Game Maker так же есть функции для использования внешних DLL. Любая возможность, которой нет в Game Maker может быть добавлена посредством DLL.

Переменные

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

  foo = "bar";

В Game Maker есть множество встроенных переменных и констант. Каждый образец объекта содержит множество локальных переменных, например «х» и «у». Также существует несколько встроенных глобальных переменных, например «score». Эти переменные существуют независимо от образцов объектов. Эти переменные не содержат приставку «global.», в отличие от глобальных переменных, указанных программистом. Одномерными и двумерные Массивы также поддерживаются в GML. В действительности, это не новый тип данных, а способ использования переменных. Массивы могут содержать как числа, так и строки, но не другие массивы. Их нельзя передать как параметр в функцию, и они не могут быть возвращены функцией как результат. Общее количество элементов массива не может быть выше 10 млн, причём каждое измерение допускает индекс от 0 до 31999 включительно. На самом деле, простые переменные хранятся, как двумерные массивы: указание имени переменной без индексов p равносильно обращению к первому элементу массива p, а с одним индексом p — к его первой строке p.

Структуры данных

В GML есть функции для создания и редактирования структур данных шести типов. Эти функции доступны только в Pro-версии Game Maker. Доступные структуры данных: стек, очередь, список, отображение, очередь с приоритетами и решётка.

Типы

Ради упрощения GML, в нем есть только два типа переменных. Каждая переменная может быть любого типа без какого-либо определения оного. Строки – набор символов любой длины. Размер ограничен только размером доступной памяти. Числа с плавающей точкой – знаковые числа с плавающей точкой. Начиная с версии 6.1, Game Maker может обрабатывать числа, заданные в шестнадцатеричном представлении. В 6-ой версии в управлении такими числами есть ошибка, из-за которой теряется точность вычислений. Эта ошибка все еще присутствует в седьмой версии, но она была смягчена увеличением точности в общем. Так как в GML нет булевского типа, выражения, в которых используются такие значения, например «if», определяют значения большие 0.5 как true, а все остальное как false. Константы true и false могут быть использованы вместо 1 и 0 соответственно.

Область действия переменных

Хотя GML рассматривается как объектно-ориентированный язык, природа объектов и образцов объектов в Game Maker создает некоторые важные отличия в способе разграничения переменных. Существует два типа локальности: локальность в объекте и локальность в скрипте. То, что переменная является локальной для образца объекта, означает, что переменная привязана к конкретному образцу объекта и может быть использована только с приставкой, определяющей этот образец; то, что переменная является локальной для скрипта, означает, что эта переменная может быть использована только в этом скрипте, так как скрипты не имеют идентификаторов, к которым можно было бы обратиться. Далее термин «локальный» будет означать локальность в объекте. По умолчанию, переменная локальна для объекта, но не локальна для скрипта, в котором она используется. Для того чтобы сделать переменную доступной всем образцам объектов, она может быть или определена через глобальное пространство имен

  global.foo = "bar";

или определена следующим способом:

  globalvar foo, bar;

В первом случае переменная должна быть использована с приставкой global., а во втором без этой приставки. Для того чтобы сделать переменную локальной для скрипта, ее нужно определять так: var foo, bar; Доступ к локальным переменным объекта можно получить, используя идентификатор образца объекта как приставку

  instance.varname

но, теме не менее, таким образом невозможно получить локальные переменные одного скрипта из другого, пока они не передаются как параметры функции. Текущее пространство имен объекта может быть изменено с помощью конструкции «with». Например, следующий скрипт, если его поместить в событие столкновения, уничтожит другой образец объекта, вовлеченный в это событие:

  with { instance_destroy; }

Локальная переменная скрипта становится полностью независимой от текущего образца. Например, следующий код будет работать нормально, хотя переменная foo не определена в образце someOtherInstance:

  var foo;
  foo = "bar";
  with { show_message; }

Распределение памяти

GML автоматически распределяет память под переменные на ходу, и использует динамические типы, поэтому присваивание переменным значения различных типов также возможно. Например, сначала можно создать целочисленную переменную, а потом изменить ее на строковую:

  intNumber = 1;
  intNumber = "Эта переменная теперь содержит строку";

К сожалению, нет такой команды, которая бы освобождала память, занятую под переменную. Когда образец объекта уничтожается, однако, все переменные, локальные для него или скрипта, уничтожаются. Следовательно, для сохранения памяти, следует использовать локальные переменные для объекта или скрипта, чем глобальные. Для хранения больших объемов информация более эффективно, в Game Maker есть поддержка нескольких структур данных таких, как стек, очередь, список, карта, очереди с приоритетами и сетка. Эти структуры создаются, модифицируются и уничтожаются посредством встроенных функций. Также есть функции практически во всех структурах для сортировки данных в них.

Объекты и ресурсы

Game Maker не поддерживает использования указателей на память, поэтому каждый ресурс имеет уникальный идентификатор, который служит для определения конкретного ресурса или образца объекта. Эти идентификаторы могут быть использованы скриптами или функциями для указания необходимого ресурса. Так как создание ресурсов непосредственно в Game Maker подразумевает указание имени, то это имя служит константой, содержащей идентификатор ресурса. Идентификатор конкретного образца хранится в локальной переменной «id». При динамическом создании ресурсов, всегда возвращается идентификатор созданного ресурса, который может быть использован в дальнейшем.



Просмотров: 5634


<<< Fortress
GPSS >>>