Использование переменных и условных операторов

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

Подсказка

Вы можете увидеть, как обсуждаемые здесь концепции применяются на практике в этом руководстве: Создание простого квеста с поиском предмета.

Что такое "переменная"

Переменные в Whimtale — это как маленькие коробочки для хранения информации, которую ваша игра должна запомнить. Они могут хранить три типа данных:

  • Числа — для подсчёта чего-либо, напр. собранные предметы, счёт, сколько раз что-то произошло.
  • Текст — для хранения имён персонажей, сообщений или любого текстового содержимого, которое вы захотите использовать позже.
  • Да/Нет (также известные как логические или Булевые значения) — для отслеживания таких состояний, как "заперта ли дверь", "выполнен ли квест" или "сделан ли выбор".

У переменных есть имя, тип, начальное значение и — в ходе игры — текущее значение. Например, у вас может быть переменная деньги типа "Число" с начальным значением 0 (печально!), и вы можете увеличивать это значение в игре с помощью Сценариев.

Есть два способа найти ваши переменные и управлять ими:

  • Вы можете открыть вкладку «Настройки»;
  • Или вы можете открыть сценарий любого Актёра и нажать кнопку «Управлять переменными» в библиотеке блоков справа, в разделе «Данные».

Вы можете добавлять новые переменные, нажав кнопку «Добавить переменную».

Блоки переменных

В Whimtale есть несколько блоков для работы с переменными — они находятся в категории "Данные":

  • Считать переменную — получает текущее значение переменной, чтобы вы могли использовать ее в других блоках.
  • Записать переменную — устанавливает переменную на определенное значение, заменяя то, что там было раньше.
  • Изменить переменную — изменяет числовую переменную с помощью операций, таких как сложение, вычитание или умножение.

Работа с условными операторами

Условные операторы позволяют вашей игре принимать решения на основе значений переменных или других условий. Основной условный блок в Whimtale — это блок «Ветвь» (находится в категории «Поток выполнения»), который работает как оператор if-else в программировании. Этот блок имеет вход для Условия, которое принимает значения «Да» или «Нет», и выполняет соответствующий исход этого блока. Чтобы блок заработал, вам нужно либо подключить переменную с помощью блока «Считать переменную», либо вычислить эти значения «Да/Нет» с помощью других блоков. Например, с этими:

  • Сравнение — сравнивает два числовых значения (например, проверяет, больше ли одна переменная другого значения, равна ли она ему или меньше).
  • Выбрать логическое значение — выбирает A или B в зависимости от третьего значения. Похоже на само ветвление, но выводит данные, а не выполняет блоки.
  • Логическое И, а также Логическое ИЛИ — проверяет, выполняются ли оба условия (И) или хотя бы одно (ИЛИ).
  • Логическое НЕ — инвертирует значение логического выражения. Если значение равно «Да», то результат будет «Нет», а если «Нет», то «Да».

Пример: Ключи и двери

Создадим простую механику сбора и траты ключей для открытия дверей. Как только ключ используется, он исчезает вместе с дверью — нереалистичный и слишком игровой подход, но отличный способ создания головоломок!

Актёр «Ключ»

  1. Создайте числовую переменную под названием «количество ключей» с начальным значением 0
  2. Для актёра «Ключ» создайте этот сценарий:
    • Начните с события "Когда герой коснулся".
    • Подключите к нему блок "Изменить переменную"
      • Установите Переменная (A) на количество ключей
      • Установите Операцию на "+"
      • Установите Значение (B) на 1
    • Далее подключите блок «Сказать реплику» с текстом:
      Вы нашли ключ! Теперь у вас ${количество ключей} штук.
      
    • Далее подключите блок "Уничтожить себя"

Актёр «Дверь»

Дверь будет требовать ключи, чтобы открыться:

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

Селекторы данных

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

Вот пример, в котором игрок заплатит только 40 монет за ключ вместо 50, если у него хорошая репутация среди торговцев:

Советы по использованию переменных и условных операторов

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