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

Chatgpt image 26 нояб. 2025 г., 19 46 46

Условия: гибкое принятие решений

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

if health <= 0:
    die()
elif health < 25:
    use_potion()
else:
    print("Персонаж в порядке")

Условия можно комбинировать:

if is_on_floor() and velocity.y > 0:
    land()

Если условие получается слишком длинным — вынесите его в отдельную функцию. Так код читается легче.

Циклы: повторяющиеся действия

GDScript предлагает два ключевых цикла: for и while. Они покрывают большинство сценариев — от обработки списков до работы со временем.

Цикл for

Используется для перебора массива, словаря, диапазона или любого итерируемого объекта:

var enemies = ["orc", "troll", "goblin"]

for enemy in enemies:
    print("Встречен: ", enemy)

Перебор диапазона:


for i in range(5):
    print(i) # 0,1,2,3,4

Цикл while

Подходит там, где вы не знаете количество итераций заранее:

while stamina > 0:
    stamina -= 1

Следите за условиями выхода — бесконечный цикл может заморозить игру.

break и continue

  • break — прекращает цикл;
  • continue — переходит к следующей итерации.
for i in range(10):
    if i == 5:
        break
    if i % 2 == 0:
        continue
    print(i)

Работа со строками

GDScript даёт несколько способов форматировать и выводить строки.

Конкатенация:

var message = "Hello, " + player_name

Шаблон через %:

var text = "Очки: %s" % score

Интерполяция (Godot 4):

var info = f"HP: {health}, Mana: {mana}"

Интерполяция — самый читаемый и удобный способ выводить параметры.

Массивы: универсальный инструмент хранения данных

📢 Подписывайтесь на наш Telegram-канал.

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

👉 https://t.me/codelab_channel

Массивы хранят набор значений любого типа. Они динамические и легко модифицируются.

var inventory = ["sword", "shield"]
inventory.append("potion")
inventory.erase("shield")

Ключевые методы массива:

  • append() — добавить элемент;
  • pop_back() — удалить последний;
  • insert() — вставить по индексу;
  • sort() — сортировать;
  • shuffle() — перемешать.

Словари: структурированные данные

Словари — удобная структура для хранения свойств, статов и данных конфигурации.

var stats = {
    "hp": 100,
    "mp": 50,
    "str": 12
}

stats["hp"] -= 10

Важные методы словаря:

  • keys() — получить список ключей;
  • values() — получить список значений;
  • erase(key) — удалить пару;
  • has(key) — проверить наличие.

range и генерация последовательностей

Функция range удобна не только в циклах, но и для создания массивов:

var sequence = range(3, 8) # 3,4,5,6,7

Чтобы задать шаг:

for n in range(0, 10, 2):
    print(n) # 0,2,4,6,8

match: мощная альтернатива switch

match делает код компактным и хорошо читаемым. Он поддерживает значения, диапазоны и даже типы.

match state:
    0:
        idle()
    1:
        walk()
    2:
        attack()
    _:
        print("Неизвестное состояние")

Сравнение по типам:

match input_value:
    is int:
        print("Это число")
    is String:
        print("Это строка")

Диапазоны:

match speed:
    0:
        stop()
    1..60:
        walk()
    61..200:
        run()

match позволяет избавиться от множества вложенных if/elif, делая код структурированным.

Работа с null и оператором ?

Если объект может отсутствовать, это требует аккуратных проверок.

if target != null:
    target.take_damage(10)

Короткая форма — безопасный вызов:

target?.take_damage(10)

Если target пустой — код просто пропустит вызов.

Итоги статьи

Управляющие конструкции формируют “мышление” вашего игрового объекта. В этой статье мы разобрали:

  • ветвления if/elif/else;
  • циклы for и while;
  • операторы break и continue;
  • работу со строками;
  • массивы и словари;
  • функцию range;
  • конструкцию match;
  • обработку null и оператор ?.

Эти инструменты позволяют описывать любое поведение — от патруля врагов до обработки событий UI. Следующая статья будет посвящена объектно-ориентированному подходу в GDScript: классам, наследованию, сигналам и взаимодействию нод.

Комментарии

0

Без регистрации и смс