Truy cập phần tử trong 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 13 trên 78.
Để truy cập một ô trong mảng 2D, hãy dùng hai chỉ số: chỉ số đầu tiên chọn hàng, chỉ số thứ hai chọn cột trong hàng đó. Cả hai đều bắt đầu từ 0.
var level := [
[1, 1, 1, 1],
[1, 0, 2, 1],
[1, 1, 1, 1]
]
print(level[1][2]) # 2 (hàng 1, cột 2)
print(level[0][0]) # 1level[1] trả về hàng [1, 0, 2, 1], rồi [2] chọn chỉ số 2 của hàng đó. Chỉ số âm đếm từ cuối, như trong mọi mảng: level[-1][-1] là ô dưới cùng bên phải.
Gán giá trị cho một ô để thay đổi ô đó. Khi người chơi nhặt đồng xu, ô đó sẽ trở thành nền:
level[1][2] = 0
print(level[1]) # [1, 0, 0, 1]Chỉ số nằm ngoài lưới sẽ gây lỗi và dừng chương trình: level[3][0] gây lỗi vì các hàng có chỉ số từ 0 đến 2. Khi chỉ số đến từ đầu vào hoặc từ phép tính, trước tiên hãy kiểm tra chúng với kích thước của lưới:
var row := 2
var col := 5
if row >= 0 and row < level.size() and col >= 0 and col < level[row].size():
print(level[row][col])
else:
print("Outside the map")Lệnh này in ra Outside the map, vì cột 5 không tồn tại. and dừng ở điều kiện đầu tiên có giá trị false, vì vậy chỉ đọc level[row] khi hàng đó tồn tại.
Thử thách
DễViết một hàm có tên get_tile với ba tham số:
grid: một mảng số nguyên hai chiều (khai báo làgrid: Array)row: chỉ số hàngcol: chỉ số cột
Hàm trả về giá trị tại hàng và cột đó. Nếu row hoặc col nằm ngoài mảng (nhỏ hơn 0, hoặc không nhỏ hơn số hàng hay số cột), hàm trả về -1. Chỉ số âm được tính là nằm ngoài mảng.
Ví dụ, get_tile([[1, 2, 3], [4, 5, 6]], 1, 2) trả về 6, còn get_tile([[1, 2], [3, 4]], 2, 1) trả về -1.
Các bài kiểm tra sẽ tự gọi get_tile() và kiểm tra giá trị hàm trả về. Đừng gọi hàm này và đừng in ra bất cứ thứ gì.
Tự làm thử
func get_tile(grid: Array, row: int, col: int):
# Viết code ở đây
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