1. Введение в GML: Синтаксис, переменные и типы данных
Введение в GML: Синтаксис, переменные и типы данных
Добро пожаловать в курс «Основы программирования на GML». Если вы читаете эту статью, значит, вы решили создать свою собственную игру с помощью GameMaker. Это отличный выбор. GameMaker Language (GML) — это мощный, но при этом дружелюбный к новичкам язык программирования. Он позволяет как быстро набросать прототип, так и создать сложную коммерческую игру.
В этой первой статье мы заложим фундамент ваших знаний. Мы разберем, как «говорить» с компьютером на его языке, как хранить информацию и какие виды данных вообще существуют в мире GameMaker.
Что такое синтаксис?
Синтаксис — это набор правил грамматики для языка программирования. Если в русском языке мы ставим точку в конце предложения, то в коде тоже есть свои знаки препинания. Если вы нарушите правила синтаксиса, компьютер вас не поймет и выдаст ошибку.
GML во многом похож на такие языки, как C++, C# или Java, но он гораздо более снисходителен к ошибкам новичков.
Основные правила написания кода
1. Завершение строки
Традиционно в программировании каждая команда заканчивается точкой с запятой ;. В GML это не всегда обязательно (код часто будет работать и без нее), но это считается правилом хорошего тона. Использование ; помогает избежать неочевидных ошибок в будущем.
2. Блоки кода
Часто нам нужно сгруппировать несколько команд вместе, чтобы они выполнялись при определенном условии (например, «если игрок нажал кнопку»). Для этого используются фигурные скобки { и }.
3. Комментарии
Комментарии — это заметки, которые программист оставляет для себя или коллег. Компьютер их игнорирует. В GML есть два вида комментариев:
* Однострочные: начинаются с //
Многострочные: заключаются между / и */
Переменные: Контейнеры для данных
Представьте, что вы переезжаете. Чтобы перевезти вещи, вы складываете их в коробки и подписываете маркером: «Книги», «Посуда», «Одежда». В программировании переменная — это и есть такая коробка. У нее есть имя (надпись маркером) и содержимое (значение).
!Визуальная метафора переменных как коробок с подписанными именами и разным содержимым.
Чтобы создать переменную (объявить её) и положить в неё значение (присвоить), мы используем знак равенства =. В программировании этот знак означает не «равно», а «присвоить значение справа переменной слева».
Правила именования переменных
Имя переменной может состоять из букв, цифр и знака подчеркивания_. Однако есть важные ограничения:
* Имя не может начинаться с цифры.
* Имя не может содержать пробелы.
* Нельзя использовать зарезервированные слова (например, if, while, return).Хорошие примеры: ammo_count, playerSpeed, _tempValue.
Плохие примеры: 2ndPlayer, my score, if.
Область видимости переменных (Scope)
Это одна из самых важных тем в GML. В зависимости от того, как вы объявите переменную, она будет доступна в разных частях игры. Существует три основных типа:
#### 1. Переменные экземпляра (Instance Variables)
Это самый частый тип. Если вы просто напишете hp = 10; внутри объекта, эта переменная будет принадлежать конкретному экземпляру этого объекта. У каждого врага на уровне может быть своя переменная hp, и они не будут мешать друг другу.
#### 2. Локальные переменные (Local Variables)
Они создаются с помощью ключевого слова var. Эти переменные существуют только в момент выполнения текущего куска кода (скрипта или события) и исчезают сразу после его завершения. Они нужны для временных вычислений.
#### 3. Глобальные переменные (Global Variables)
Эти переменные доступны из любой точки игры. Они принадлежат не объекту, а всему игровому миру. Их используют для хранения очков, настроек или номера уровня. Чтобы создать такую переменную, используют префикс global..
!Диаграмма областей видимости переменных в GML.
Типы данных
В наши «коробки»-переменные можно класть разные вещи. GML определяет тип данных автоматически (динамическая типизация), но вам важно понимать, с чем вы работаете.
1. Вещественные числа (Real Numbers)
В GML любые числа — целые или дробные — считаются одним типом. Это могут быть координаты, здоровье, скорость или угол поворота.Пример математической операции с числами: Допустим, мы рассчитываем урон. Формула может выглядеть так:
Где — итоговый урон, — базовый урон оружия, а — множитель критического удара.
В коде это выглядит так:
2. Строки (Strings)
Строка — это текст. Строки всегда заключаются в двойные" или одинарные ' кавычки. Если вы забудете кавычки, GameMaker подумает, что вы пишете имя переменной.Вы можете складывать строки (конкатенация):
3. Булевы значения (Booleans)
Это логический тип, который может иметь только два значения: истина (true) или ложь (false). Они используются для проверок и переключателей.В GML true также равно числу , а false равно числу . Но для читаемости кода лучше использовать слова.
4. Массивы (Arrays)
Иногда нужно хранить список предметов, например, инвентарь. Создавать переменныеitem1, item2, item3 неудобно. Для этого есть массивы — нумерованные списки.Чтобы получить доступ к элементу, мы используем его индекс в квадратных скобках. Важно: нумерация начинается с нуля.
5. Специальные типы
В GML есть особые значения, которые вы будете встречать часто: *undefined — значение не определено (часто бывает при ошибках или пустых полях).
* noone — специальное значение (равное ), которое означает «никого». Например, функция поиска врага может вернуть noone, если врагов рядом нет.Простые операции
Теперь, когда у нас есть переменные, мы можем производить над ними действия.
Арифметические операции
*+ Сложение
* - Вычитание
Умножение
* / ДелениеОперации сравнения
Эти операции всегда возвращаютtrue или false.
* == Равно ли? (Обратите внимание на двойное равно для сравнения!)
* != Не равно
* > Больше
* < Меньше
* >= Больше или равно
* <= Меньше или равноПример проверки:
Заключение
Сегодня вы узнали, как строится код в GML. Вы поняли, что переменные — это именованные хранилища данных, и что эти данные могут быть разных типов: от простых чисел до текстовых строк и списков. Также вы разобрались с тем, что переменные могут быть временными (var), принадлежать объекту или быть глобальными.
В следующей статье мы углубимся в логику программирования и разберем условные операторы и циклы, чтобы ваши игры стали по-настоящему интерактивными.