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]) # 1level[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.
Wyzwanie
ŁatwyNapisz funkcję o nazwie get_tile z trzema parametrami:
grid: dwuwymiarowa tablica liczb całkowitych (zadeklaruj ją jakogrid: Array)row: indeks wierszacol: 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
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
1Łańcuchy znaków — zagadnienia zaawansowane
Metody łańcuchów znakówWyszukiwanie w łańcuchach znakówZastępowanie i przycinanieDzielenie i łączeniePodsumowanie — sprawdzanie nazwy użytkownika4Słowniki, część 2
Zagnieżdżone słownikiTablice słownikówŁączenie słownikówKopiowanie słownikówPodsumowanie – licznik częstotliwości7Typy wyliczeniowe
Czym jest typ wyliczeniowy?Definiowanie typu wyliczeniowegoWartości typu wyliczeniowegoTypy wyliczeniowe w matchPowtórka – sygnalizacja świetlna10Zaawansowane funkcje
Zwracanie wielu wartościFunkcje lambda — część 1Funkcje lambda — część 2Powtórka — sortowanie za pomocą lambdaFunkcje rekurencyjne — część 1Funkcje rekurencyjne — część 2Powtórka — sumowanie zagnieżdżonej tablicy13System zarządzania zapasami
Omówienie projektuDodawanie produktu2Zaawansowane podejmowanie decyzji
Dopasowanie ze zmiennymiStrażnicy dopasowaniaWzorce tablicWzorce słownikówSprawdzanie przynależnościPowtórka — parser poleceń5Aplikacja książki kontaktów
Wyświetlanie menuDodawanie kontaktu8Menedżer danych studentów
Przegląd projektuDodaj studenta3Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DTablice postrzępioneTypowe wzorce tablic 2DPodsumowanie — plansza do gry6Zbiory ze słownikami
Czym jest zbiór?Słownik jako zbiórDodawanie i usuwanieSuma i część wspólnaRóżnica zbiorówPowtórka – usuwanie duplikatów9Zaawansowana agregacja danych
Sumowanie wartościZnajdowanie minimum i maksimumSortowanie niestandardowePodsumowanie – Sortownik słownikówPoćwicz samodzielnie: Kompilator GDScript online