Использование переменных и условных операторов
Переменные, в сочетании с различными блоками, позволяют сделать вашу игру более динамичной. Вместе они позволяют отслеживать прогресс игрока и реализовывать сложные механики на его основе — например, квесты или головоломки.
Вы можете увидеть, как обсуждаемые здесь концепции применяются на практике в этом руководстве: Создание простого квеста с поиском предмета.
Что такое "переменная"
Переменные в Whimtale — это как маленькие коробочки для хранения информации, которую ваша игра должна запомнить. Они могут хранить три типа данных:
- Числа — для подсчёта чего-либо, напр. собранные предметы, счёт, сколько раз что-то произошло.
- Текст — для хранения имён персонажей, сообщений или любого текстового содержимого, которое вы захотите использовать позже.
- Да/Нет (также известные как логические или Булевые значения) — для отслеживания таких состояний, как "заперта ли дверь", "выполнен ли квест" или "сделан ли выбор".
У переменных есть имя, тип, начальное значение и — в ходе игры — текущее значение. Например, у вас может быть переменная деньги типа "Число" с начальным значением 0 (печально!), и вы можете увеличивать это значение в игре с помощью Сценариев.
Есть два способа найти ваши переменные и управлять ими:
- Вы можете открыть вкладку «Настройки»;
- Или вы можете открыть сценарий любого Актёра и нажать кнопку «Управлять переменными» в библиотеке блоков справа, в разделе «Данные».
Вы можете добавлять новые переменные, нажав кнопку «Добавить переменную».

Блоки переменных
В Whimtale есть несколько блоков для работы с переменными — они находятся в категории "Данные":
- Считать переменную — получает текущее значение переменной, чтобы вы могли использовать ее в других блоках.
- Записать переменную — устанавливает переменную на определенное значение, заменяя то, что там было раньше.
- Изменить переменную — изменяет числовую переменную с помощью операций, таких как сложение, вычитание или умножение.
Работа с условными операторами
Условные операторы позволяют вашей игре принимать решения на основе значений переменных или других условий. Основной условный блок в Whimtale — это блок «Ветвь» (находится в категории «Поток выполнения»), который работает как оператор if-else в программировании. Этот блок имеет вход для Условия, которое принимает значения «Да» или «Нет», и выполняет соответствующий исход этого блока. Чтобы блок заработал, вам нужно либо подключить переменную с помощью блока «Считать переменную», либо вычислить эти значения «Да/Нет» с помощью других блоков. Например, с этими:
- Сравнение — сравнивает два числовых значения (например, проверяет, больше ли одна переменная другого значения, равна ли она ему или меньше).
- Выбрать логическое значение — выбирает A или B в зависимости от третьего значения. Похоже на само ветвление, но выводит данные, а не выполняет блоки.
- Логическое И, а также Логическое ИЛИ — проверяет, выполняются ли оба условия (И) или хотя бы одно (ИЛИ).
- Логическое НЕ — инвертирует значение логического выражения. Если значение равно «Да», то результат будет «Нет», а если «Нет», то «Да».
Пример: Ключи и двери
Создадим простую механику сбора и траты ключей для открытия дверей. Как только ключ используется, он исчезает вместе с дверью — нереалистичный и слишком игровой подход, но отличный способ создания головоломок!
Актёр «Ключ»
- Создайте числовую переменную под названием «количество ключей» с начальным значением 0
- Для актёра «Ключ» создайте этот сценарий:
- Начните с события "Когда герой коснулся".
- Подключите к нему блок "Изменить переменную"
- Установите Переменная (A) на
количество ключей - Установите Операцию на "+"
- Установите Значение (B) на 1
- Установите Переменная (A) на
- Далее подключите блок «Сказать реплику» с текстом:
Вы нашли ключ! Теперь у вас ${количество ключей} штук. - Далее подключите блок "Уничтожить себя"

Актёр «Дверь»
Дверь будет требовать ключи, чтобы открыться:
- Создайте актёра «Дверь» с этим сценарием:
- Начните с события "Когда герой коснулся".
- Подключите блок "Ветвь".
- Подключите блок "Сравнение" ко входному условию ветвления.
- Свяжите первое значение (A) с новым блоком «Считать переменную», где переменной является
количество ключей. - Установите сравнение на ">=" (больше или равно).
- Установите второе значение на 1.
- Свяжите первое значение (A) с новым блоком «Считать переменную», где переменной является
- Из исхода "Да", подключите:
- Блок «Сказать реплику» с текстом: «Вы открыли дверь ключом! Как по волшебству, они оба исчезают».
- Затем блок «Изменить переменную», который изменит
количество ключей, но на этот раз будет вычитать 1. - Затем блок «Уничтожить себя». (Это уберёт дверь из сцены).
- Из исхода «Нет», подключите:
- Блок «Сказать реплику» с текстом: «Эта дверь заперта, и у вас нет ключей».

Селекторы данных
Для данных существуют "селекторы" с блоками под названием "Выбрать число", "Выбрать строку" и "Выбрать логическое значение". Они ведут себя одним образом и позволяют передавать значение A, если условие истинно, и B, если оно ложно. Это похоже на тернарные операторы в языках программирования.
Вот пример, в котором игрок заплатит только 40 монет за ключ вместо 50, если у него хорошая репутация среди торговцев:

Советы по использованию переменных и условных операторов
- Давайте переменным понятные имена — используйте описательные имена, такие как «количество ключей», а не просто «к» или «ыолпгшкрщровыкповчрикгнпгц».
- Начните с малого — начните с простых счётчиков и ветвлений, прежде чем создавать сложную логику.
- Часто тестируйте — часто играйте в свою игру, чтобы проверить, работают ли ваши переменные и условные операторы так, как ожидалось. Используйте панель инструментов справа, чтобы изменять значения ваших переменных на лету для экономии времени.
- Используйте текстовые шаблоны — включите переменные в диалоги с помощью
${имяПеременной}, чтобы ваша игра чувствовалась отзывчивой к действиям игрока и прозрачной о текущих значениях переменных. - Помните о начальных значениях — задавайте соответствующие начальные значения для ваших переменных (например, 0 для счетчиков и, скажем, 5 для жизней).