Menu
CoddyTech

Dostęp do elementów tablic 2D

Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 13 z 78.

Aby uzyskać dostęp do jednej komórki tablicy 2D, użyj dwóch indeksów: pierwszy wybiera wiersz, a drugi kolumnę w tym wierszu. Oba zaczynają się od 0.

var level := [
	[1, 1, 1, 1],
	[1, 0, 2, 1],
	[1, 1, 1, 1]
]
print(level[1][2]) # 2 (wiersz 1, kolumna 2)
print(level[0][0]) # 1

level[1] zwraca wiersz [1, 0, 2, 1], a następnie [2] wybiera indeks 2 tego wiersza. Indeksy ujemne liczy się od końca, jak w każdej tablicy: level[-1][-1] to komórka w prawym dolnym rogu.

Przypisz wartość do komórki, aby ją zmienić. Gdy gracz podniesie monetę, jej kafelek stanie się podłogą:

level[1][2] = 0
print(level[1]) # [1, 0, 0, 1]

Indeks spoza siatki powoduje błąd, który zatrzymuje program: level[3][0] nie działa, ponieważ wiersze są ponumerowane od 0 do 2. Gdy indeksy pochodzą z danych wejściowych lub z obliczeń, najpierw sprawdź je względem rozmiaru siatki:

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")

To wypisuje Outside the map, ponieważ kolumna 5 nie istnieje. and zatrzymuje się na pierwszym warunku, który jest false, więc level[row] jest odczytywane tylko wtedy, gdy wiersz istnieje.

challenge icon

Wyzwanie

Łatwy

Napisz funkcję o nazwie get_tile z trzema parametrami:

  1. grid: dwuwymiarowa tablica liczb całkowitych (zadeklaruj ją jako grid: Array)
  2. row: indeks wiersza
  3. col: indeks kolumny

Zwraca wartość z danego wiersza i kolumny. Jeśli row lub col znajduje się poza siatką (jest mniejszy niż 0 albo nie jest mniejszy od liczby wierszy lub kolumn), zamiast tego zwraca -1. Indeksy ujemne uznaje się za znajdujące się poza siatką.

Na przykład get_tile([[1, 2, 3], [4, 5, 6]], 1, 2) zwraca 6, a get_tile([[1, 2], [3, 4]], 2, 1) zwraca -1.

Testy same wywołują get_tile() i sprawdzają zwracaną przez nią wartość. Nie wywołuj jej i niczego nie wyświetlaj.

Spróbuj swoich sił

func get_tile(grid: Array, row: int, col: int):
	# Napisz kod tutaj
	pass
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator GDScript online