Введение в Catnip (Котомяту)
Введение в Catnip (Котомяту)
Автоматически переведённая страница
К сожалению, на полный ручной перевод у нас не хватает ресурсов.
Если вы увидели ошибку — отправьте пул-риквест с исправлениями (ссылка для редактирования в конце страницы).
Catnip, или Котомята по-русски — это визуальный язык программирования, созданный специально для ct.js. Он похож на Google Blocks или язык Scratch, но при этом имеет множество улучшений для удобства использования по сравнению с этими языками. Он компилируется непосредственно в JavaScript, поэтому он такой же быстрый и мощный. На этой странице мы рассмотрим его функции и как писать скрипты с помощью него.
Совет
Если вы еще не сделали этого, ознакомьтесь с основными концепциями, чтобы познакомиться с различными типами ресурсов в ct.js.
Создание проекта Catnip
При создании проекта вы можете выбрать Catnip в качестве основного языка программирования. После этого у вас будет редактор Catnip вместо обычного кода для каждого шаблона, комнаты и поведения.
Вы также можете использовать Catnip в любом ассете типа Скрипт, так как у них есть настройка используемого языка внутри их редактора.
Написание сценариев для Catnip
Когда вы открываете скриптовый актив (шаблон, поведение или переходите к панели событий комнаты), у вас будет три-четыре колонки:
- Колонка с главными настройками ассета, такими как текстура шаблона и список событий в этом ассете;
- Главная зона для скриптов, где вы помещаете свои блоки;
- Библиотека блоков со всеми блоками, которые вы можете использовать;
- В шаблонах есть четвертая колонка с свойствами шаблона. Если вам нужно больше места, вы можете свернуть ее с помощью маленькой кнопки в правом верхнем углу.
Сначала вам нужно создать событие в нижней части первой колонки. Событие — это то, что запускает ваши скрипты, и вы можете создавать разные события для того, чтобы ваши шаблоны реагировали на разные действия в игре.
Вы можете помещать блоки несколькими способами:
- Вы можете перетаскивать блоки из библиотеки блоков в зону для скриптов;
- Вы также можете переместить курсор мыши между блоками или в верхнюю часть скрипта — появится линия с кнопкой «плюс», которая откроет поле поиска. Вы можете поместить первый блок, нажав Enter или переключиться между ними с помощью клавиши Tab. Помещение любого блока с помощью этого поиска автоматически откроет новое окно поиска, позволяя быстро вводить серию блоков с клавиатуры.
Аналогичный поиск расположен в верхней части библиотеки блоков, но вы сможете помещать блоки только с помощью перетаскивания (поскольку иначе как узнать, куда нужно их поместить?). Оба поиска будут выводить блоки, если вы вводите имена блоков на английском языке или на языке интерфейса, используемого в Catnip.
Типы блоков
В каждой блоке Catnip есть либо вычисляемый блок, либо командный блок. Командные блоки имеют прямоугольную форму и обычно используются для выполнения определенных действий. Вычисляемые блоки извлекают значения или рассчитывают что-то, что можно использовать в командных блоках или сложных формулах из нескольких вычисляемых блоков. Оба типа блоков могут иметь аргументы, которые представляют собой слоты, которые можно заполнить вычисляемыми блоками или вручную ввести значение.
Командный блок с одним аргументом | Вычисляемый блок |
---|---|
Вычисляемые блоки отличаются цветом, а цвет указывает на тип возвращаемого значения:
- Желтые блоки используются для логических значений, которые могут быть либо
true
, либоfalse
. Эти значения обычно используются в логических операторах и иногда как переключатели определенных параметров. - Зеленые блоки хранят числовые значения, которые могут быть целыми или дробными числами.
- Розовые блоки хранят строковые значения.
- Синие блоки хранят цветовые значения.
- Фиолетовые блоки называются универсальными (или джокерами, с их английского названия wildcard) и могут хранить значения любого типа. Они также могут быть использованы для ссылки на другие копии, хранения сложных структур и данных, которые вы сами определяете.
Логический | Числовой | Строковый | Цветовой | Универсальный |
---|---|---|---|---|
За исключением универсальных блоков, вы можете поместить вычисляемый блок только в слоты соответствующего типа.
Чтобы облегчить преобразования типов (например, при необходимости форматирования строки с динамическим переменной цены), Catnip имеет несколько специальных вычисляемых блоков:
Пример: изменить текст в строку, содержащую число
Свойства и переменные
У Catnip огромное количество блоков для манипуляции внешним видом, положением и движением ваших копий, но чаще всего вам понадобится создать дополнительные значения, чтобы управлять логикой игры. Эти значения называются свойствами и переменными, и их можно рассматривать как помеченные имена с данными. И свойства, и переменные — это вычислительные блоки, которые вы можете использовать везде в Catnip.
В зависимости от того, где и в каком событии вы пишете код, вы можете использовать несколько типов переменных и свойств:
- Обычные свойства (например, ). Вы можете создавать их в верхней части библиотеки блоков в категории «Свойства». Эти свойства сохраняются непосредственно в копии (или экземпляре комнаты, если вы определяете их в событии комнаты) и не разделяются. Такие переменные полезны для отслеживания очков здоровья единицы.
- Обычные переменные (например, ). В отличие от свойств, которые существуют, пока существует копия или комната, содержащая их, переменные существуют только в течение события, в котором вы их редактируете. Каждый раз, когда ваше событие начинается снова, значения переменных сбрасываются к ничему. (Чтобы быть более конкретными, они становятся «неопределенными».) Это делает переменные бесполезными в долгосрочной перспективе, но хороши для хранения результатов вычислений или вещей, которые вы не хотите случайно использовать позже, например, ссылку на теперь разрушенную копию.
- Глобальные переменные (например, ). Это переменные, хранящиеся в самой игре во время ее выполнения. Глобальная переменная хранит одно значение, которое можно читать и записывать из любой точки, и это значение останется до тех пор, пока игра не будет закрыта. (Если вы хотите сохранить переменную между запусками, вам понадобятся блоки «Сохранить/Загрузить из хранилища».)
- Переменные событий (например, ) могут предоставляться некоторыми событиями для предоставления дополнительных сведений о том, когда событие было запущено.
- Свойства поведения (например, ) наследуются от поведения, которое вы связываете в своих шаблонах и комнатах, и работают так же, как обычные свойства.
Полезные функции Catnip для написания скриптов
Возвращаемые значения справа
Некоторые блоки команд возвращают значение, подобно вычисляемым значениям. Возвращенные значения могут быть сохранены в переменной или свойстве и использованы позже — но обычно эти слоты являются необязательными. Например, вы можете сохранить экземпляр сыгранной музыки в глобальной переменной и остановить ее позже:
Мутаторы
Щелкнув правой кнопкой мыши по некоторым блокам, вы откроете расширенный контекстный меню с командами, позволяющими заменить выбранный блок на похожий. Значения, которые присутствуют в обоих блоках, будут сохранены. Например, попробуйте щелкнуть правой кнопкой мыши по математическим блокам, логическим блокам или блокам с значениями x/y или ширина/высота.
Исправление ошибки путем замены блока щелчком правой кнопкой мыши
Что дальше?
Изучите, как использовать условия и циклы If-Else для выполнения скриптов условно и автоматизации повторяющихся действий в следующей главе.