Определение Enum
Часть раздела Логика и потоки выполнения путешествия по GDScript на Coddy. Урок 38 из 78.
Объявление перечисления состоит из ключевого слова enum, имени и вариантов внутри фигурных скобок, разделённых запятыми. В руководстве по стилю Godot имя записывается в PascalCase, а варианты — в CONSTANT_CASE:
enum Direction { NORTH, EAST, SOUTH, WEST }Длинное перечисление можно записать, разместив по одному варианту в строке. Запятая после последнего варианта допустима:
enum Weapon {
SWORD,
BOW,
STAFF,
}Вы можете выбрать значение параметра с помощью =. Параметр без значения получает значение предыдущего параметра плюс 1:
enum Difficulty { EASY = 1, NORMAL, HARD, NIGHTMARE = 10 }
# EASY = 1, NORMAL = 2, HARD = 3, NIGHTMARE = 10Перечисление тоже является типом. Переменная, объявленная с ним, хранит один из его вариантов:
var level: Difficulty = Difficulty.HARD
print(level) # 3
print(level * 50) # 150Скрипт может объявлять несколько перечислений, каждое со своим именем. Если не указывать имя, как в enum { LEFT, RIGHT }, варианты становятся константами скрипта, и вы пишете LEFT без префикса.
Задание
ЛегкоПрограмма считывает базовый урон, наносимый врагом (целое число). На более высоких уровнях сложности враг наносит больше урона: урон равен базовому урону, умноженному на значение уровня сложности.
- На верхнем уровне скрипта объяви перечисление с именем
Difficultyс вариантамиEASY(значение1),NORMAL,HARDиNIGHTMARE(значение10). Не задавайNORMALиHARDсобственные значения, чтобы их значения продолжали отсчёт отEASY. - Выведи урон для каждого уровня сложности, по одному значению в строке, используя варианты перечисления при вычислении.
Для входного значения 12 результат будет таким:
EASY: 12
NORMAL: 24
HARD: 36
NIGHTMARE: 120Попробуйте сами
extends Node
# Объявите здесь перечисление Difficulty
func _ready():
var base_damage := int(OS.read_string_from_stdin())
# Выведите урон для каждого уровня сложности
pass
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и потоки выполнения
1Строки: углублённое изучение
Методы строкПоиск в строкахЗамена и обрезка пробеловРазделение и объединениеПовторение — проверка имени пользователя4Словари. Часть 2
Вложенные словариМассивы словарейОбъединение словарейКопирование словарейПовторение — подсчёт частоты10Продвинутые функции
Возврат нескольких значенийЛямбда-функции. Часть 1Лямбда-функции. Часть 2Повторение — сортировка с помощью лямбда-функцииРекурсивные функции. Часть 1Рекурсивные функции. Часть 2Повторение — сумма вложенного массива13Система управления запасами
Обзор проектаДобавление товара2Продвинутое управление ветвлением
Сопоставление с переменнымиУсловия в шаблонахШаблоны массивовШаблоны словарейПроверка принадлежностиИтоги — парсер команд5Приложение «Телефонная книга»
Показать менюДобавить контакт8Менеджер успеваемости студентов
Обзор проектаДобавить студента3Многомерные массивы
Основы двумерных массивовДоступ к элементам двумерного массиваВложенные циклы с двумерными массивамиПовторение: двумерные массивыРваные массивыТипичные шаблоны работы с двумерными массивамиПовторение: игровое поле6Множества и словари
Что такое множество?Словарь как множествоДобавление и удалениеОбъединение и пересечениеРазность множествПовторение — удаление дубликатовПотренируйтесь самостоятельно: Онлайн-компилятор GDScript