Menu
CoddyTech

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]) # 1

level[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.

challenge icon

Thử thách

Dễ

Viết một hàm có tên get_tile với ba tham số:

  1. grid: một mảng số nguyên hai chiều (khai báo là grid: Array)
  2. row: chỉ số hàng
  3. col: 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
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