Menu
CoddyTech

Определение 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 без префикса.

challenge icon

Задание

Легко

Программа считывает базовый урон, наносимый врагом (целое число). На более высоких уровнях сложности враг наносит больше урона: урон равен базовому урону, умноженному на значение уровня сложности.

  1. На верхнем уровне скрипта объяви перечисление с именем Difficulty с вариантами EASY (значение 1), NORMAL, HARD и NIGHTMARE (значение 10). Не задавай NORMAL и HARD собственные значения, чтобы их значения продолжали отсчёт от EASY.
  2. Выведи урон для каждого уровня сложности, по одному значению в строке, используя варианты перечисления при вычислении.

Для входного значения 12 результат будет таким:

EASY: 12
NORMAL: 24
HARD: 36
NIGHTMARE: 120

Попробуйте сами

extends Node

# Объявите здесь перечисление Difficulty

func _ready():
	var base_damage := int(OS.read_string_from_stdin())
	# Выведите урон для каждого уровня сложности
	pass
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и потоки выполнения

Потренируйтесь самостоятельно: Онлайн-компилятор GDScript