Перейти к основному содержанию

Использование категории Логика: условия и циклы

13 июня 2024 г.

Использование категории Логика: условия и циклы

Автоматически переведённая страница

К сожалению, на полный ручной перевод у нас не хватает ресурсов.
Если вы увидели ошибку — отправьте пул-риквест с исправлениями (ссылка для редактирования в конце страницы).

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

Условия (блоки Если-То)

Условия позволяют управлять выполнением блоков, проверяя значение логического значения. Это мощный инструмент для дальнейшего уточнения логики событий. Если значение, переданное в слот условия блока, равно true, выполняется часть "То" команды. Если вы используете расширенный блок Если-То-Иначе и если возвращаемое значение логического значения равно false, выполняется часть "Иначе". Это позволяет делать разные вещи!

Например, так можно запрограммировать логику покупки:

If money price
Decrease money by price Note Play a sound UI_Train
store in
Advanced
Copy a template Worker x of base y of base
store in
Advanced

Для создания более сложных условий вы можете использовать логические операторы "AND" и "OR": они позволяют проверять несколько переменных сразу без добавления новых блоков If-Else. Например, при кодировании прыжка в платформере вам нужно убедиться, что игрок нажимает кнопку прыжка и его персонаж находится на земле:

Note Set onGround value place occupied this x y + If onGround and is action pressed MoveY
Note Set vertical speed to

Циклы

Циклы обычно используются для выполнения повторяющихся операций с одним набором инструкций и могут также использоваться для сопоставления элементов массива с новыми элементами. Например, цикл "Пока" с переменной-счетчиком может быть использован для базовой процедурной генерации:

Set count value While count <
Copy a template Tree random range width random range height
store in
Advanced
Increment count

То же самое можно сделать с помощью цикла "Повторить N раз":

Repeat times
store index in
Copy a template Tree random range width random range height
store in
Advanced

Вы также можете пройти через известные значения массива с помощью "Для каждого X из массива":

Note For each ally of array templates list Heroes
If 2-point distance x y x of ally y of ally
Increase read from ally by Note If read from ally > read from ally
Write ally property value read from ally

Если вам нужно прервать цикл раньше времени, вы можете использовать блок «Остановить этот цикл». Например, этот код ищет запись в субсистеме контента и находит цену исканного здания.

For each building of array buildings
If read from building is
Decrease money by read from building Stop this loop

Что дальше?

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

Your primary language is en-US, do you want to switch to it?

Ваш основной язык - en-US, вы хотите переключиться на него?