Đị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 = 10Enum 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) # 150Mộ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ố.
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ó.
- Ở cấp cao nhất của tập lệnh, khai báo một enum có tên
Difficultyvới các tùy chọnEASY(giá trị1),NORMAL,HARDvàNIGHTMARE(giá trị10). Không gán giá trị riêng choNORMALvàHARD, để chúng tiếp tục đếm từEASY. - 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: 120Tự 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
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
1Chuyên sâu về chuỗi
Các phương thức của chuỗiTìm kiếm trong chuỗiThay thế và xóa khoảng trắngTách và nốiÔn tập: Kiểm tra tên người dùng7Kiểu liệt kê
Kiểu liệt kê là gì?Định nghĩa kiểu liệt kêCác giá trị của kiểu liệt kêKiểu liệt kê trong matchÔn tập: đèn giao thông10Hàm nâng cao
Trả về nhiều giá trịHàm lambda phần 1Hàm lambda phần 2Ôn tập: sắp xếp bằng lambdaHàm đệ quy phần 1Hàm đệ quy phần 2Ôn tập: tính tổng mảng lồng nhau13Hệ thống quản lý hàng tồn kho
Tổng quan dự ánThêm mặt hàng2Ra quyết định nâng cao
So khớp với biếnĐiều kiện bảo vệ trong so khớpMẫu mảngMẫu từ điểnKiểm tra thành viênÔn tập: Bộ phân tích lệnh5Ứng dụng sổ liên lạc
Hiển thị menuThêm liên hệ8Trình quản lý hồ sơ học sinh
Tổng quan dự ánThêm học sinh3Mảng nhiều chiều
Cơ bản về mảng 2 chiềuTruy cập phần tử trong mảng 2 chiềuVòng lặp lồng nhau với mảng 2 chiềuÔn tập: mảng 2 chiềuMảng răng cưaCác mẫu phổ biến với mảng 2 chiềuÔn tập: bàn cờ6Tập hợp với từ điển
Tập hợp là gì?Từ điển như một tập hợpThêm và xóaHợp và giaoHiệu tập hợpÔn tập: Xóa phần tử trùng lặp9Tổng hợp dữ liệu nâng cao
Tính tổng các giá trịTìm giá trị nhỏ nhất và lớn nhấtSắp xếp tùy chỉnhÔn tập: Sắp xếp từ điểnTự luyện tập: Trình biên dịch GDScript online