Menu
CoddyTech

Định nghĩa kiểu liệt kê

Thuộc phần Logic và luồng chương trình trong hành trình GDScript của Coddy. Bài học 38 trên 78.

Khai báo enum gồm từ khóa enum, một tên và các tùy chọn bên trong dấu ngoặc nhọn, cách nhau bằng dấu phẩy. Hướng dẫn phong cách của Godot viết tên theo kiểu PascalCase và các tùy chọn theo kiểu CONSTANT_CASE:

enum Direction { NORTH, EAST, SOUTH, WEST }

Một kiểu liệt kê (enum) dài có thể đặt mỗi tùy chọn trên một dòng. Bạn có thể thêm dấu phẩy sau tùy chọn cuối cùng:

enum Weapon {
	SWORD,
	BOW,
	STAFF,
}

Bạn có thể chọn giá trị cho một lựa chọn bằng =. Lựa chọn không có giá trị sẽ nhận giá trị của lựa chọn đứng trước cộng thêm 1:

enum Difficulty { EASY = 1, NORMAL, HARD, NIGHTMARE = 10 }
# EASY = 1, NORMAL = 2, HARD = 3, NIGHTMARE = 10

Enum cũng là một kiểu dữ liệu. Biến được khai báo với kiểu này sẽ chứa một trong các lựa chọn của nó:

var level: Difficulty = Difficulty.HARD
print(level) # 3
print(level * 50) # 150

Một script có thể khai báo nhiều enum, mỗi enum có tên riêng. Nếu bạn bỏ tên, như trong enum { LEFT, RIGHT }, các lựa chọn sẽ trở thành hằng số của script, và bạn viết LEFT mà không cần tiền tố.

challenge icon

Thử thách

Dễ

Chương trình đọc sát thương cơ bản của kẻ địch (một số nguyên). Ở các mức độ khó cao hơn, kẻ địch gây sát thương lớn hơn: sát thương bằng sát thương cơ bản nhân với giá trị của mức độ khó.

  1. Ở cấp cao nhất của tập lệnh, khai báo một enum có tên Difficulty với các tùy chọn EASY (giá trị 1), NORMAL, HARD và NIGHTMARE (giá trị 10). Không gán giá trị riêng cho NORMAL và HARD, để chúng tiếp tục đếm từ EASY.
  2. In sát thương của từng mức độ khó, mỗi mức trên một dòng, dùng các tùy chọn enum trong phép tính.

Với đầu vào 12, đầu ra là:

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

Tự làm thử

extends Node

# Khai báo enum Difficulty ở đây

func _ready():
	var base_damage := int(OS.read_string_from_stdin())
	# In ra sát thương cho từng độ khó
	pass
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch GDScript online