Cơ bản về mảng 2 chiều
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 12 trên 78.
Mảng 2D lưu trữ các giá trị theo hàng và cột, giống như một bảng hoặc các ô trong bản đồ trò chơi. Trong GDScript, mảng 2D là một mảng có các phần tử là những mảng khác: mỗi mảng bên trong là một hàng.
var level := [
[1, 1, 1, 1],
[1, 0, 2, 1],
[1, 1, 1, 1]
]Trong bản đồ này, 0 là sàn, 1 là tường và 2 là đồng xu. Viết mỗi hàng trên một dòng giúp lưới dễ đọc hơn, và GDScript cũng chấp nhận toàn bộ giá trị cố định trên một dòng.
print() in ra mảng 2D trên một dòng, mỗi hàng nằm trong dấu ngoặc vuông riêng:
print(level)[[1, 1, 1, 1], [1, 0, 2, 1], [1, 1, 1, 1]]size() trên mảng bên ngoài đếm số hàng. level[0] là hàng đầu tiên, một mảng thông thường, vì vậy level[0].size() đếm số cột:
print(level.size()) # 3 hàng
print(level[0].size()) # 4 cộtVòng lặp for duyệt qua mảng bên ngoài sẽ cho bạn một hàng trong mỗi lần lặp:
for row in level:
print(row)[1, 1, 1, 1]
[1, 0, 2, 1]
[1, 1, 1, 1]Các ô có thể thuộc bất kỳ kiểu dữ liệu nào: [["X", "O"], ["O", "X"]] là một lưới gồm các chuỗi. Bạn cũng có thể bắt đầu với một mảng rỗng rồi dùng append() để thêm các hàng:
var board := []
board.append(["X", "O", "X"])
board.append(["O", "X", "O"])
print(board.size()) # 2Thử thách
DễTạo bản đồ cho một hầm ngục nhỏ. Tạo một mảng 2D có tên level với 4 hàng sau, theo đúng thứ tự này:
1 1 1 1 1
1 0 2 0 1
1 0 1 3 1
1 1 1 1 1Mỗi hàng là một mảng gồm 5 số. Sau đó, dùng size() để in số hàng và số cột, trước khi vòng lặp đã cho in các hàng. Đầu ra phải là:
Rows: 4
Columns: 5
[1, 1, 1, 1, 1]
[1, 0, 2, 0, 1]
[1, 0, 1, 3, 1]
[1, 1, 1, 1, 1]Tự làm thử
extends Node
func _ready():
# Thay [] bằng bản đồ hầm ngục
var level := []
# In ra số hàng và số cột tại đây
for row in level:
print(row)
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