Pętle zagnieżdżone z tablicami 2D
Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 14 z 78.
Aby odwiedzić każdą komórkę tablicy 2D, umieść jedną pętlę wewnątrz drugiej. Zewnętrzna pętla przechodzi przez wiersze, a wewnętrzna pętla przechodzi przez komórki bieżącego wiersza:
var grid := [[1, 2, 3], [4, 5, 6]]
var total := 0
for row in grid:
for cell in row:
total += cell
print(total) # 21Gdy potrzebujesz pozycji każdej komórki, przejdź pętlą po indeksach. r to indeks wiersza, c to indeks kolumny, a pętla wewnętrzna używa grid[r].size(), czyli długości bieżącego wiersza:
for r in range(grid.size()):
for c in range(grid[r].size()):
grid[r][c] *= 10
print(grid) # [[10, 20, 30], [40, 50, 60]]Przypisanie do cell w pętli for cell in row nie zmienia siatki, ponieważ cell przechowuje kopię liczby. Zmieniaj komórki za pomocą ich indeksów, jak powyżej.
Pętle zagnieżdżone również tworzą siatkę. Utwórz nowy wiersz wewnątrz pętli zewnętrznej, wypełnij go w pętli wewnętrznej, a następnie dodaj go:
var town := []
for r in range(3):
var row := []
for c in range(4):
row.append(".")
town.append(row)
town[1][2] = "P"
for row in town:
print("".join(row))....
..P.
....Wiersz musi zostać utworzony wewnątrz zewnętrznej pętli. Tablica jest współdzielona, a nie kopiowana, gdy ją dołączasz: jeśli trzy razy dołączysz ten sam row, te trzy wiersze będą jedną tablicą, a town[1][2] = "P" umieszcza P w każdym wierszu.
Wyzwanie
ŁatwyNarysuj mapę miasta. Program odczytuje cztery liczby całkowite, po jednej w wierszu: liczbę wierszy, liczbę kolumn, wiersz gracza i kolumnę gracza. Pozycja gracza zawsze znajduje się na mapie.
- Zbuduj
grid, dwuwymiarową tablicę o podanej liczbie wierszy i kolumn, w której każda komórka zawiera".". Użyj zagnieżdżonych pętli i utwórz nową tablicę wiersza dla każdego wiersza. - Ustaw komórkę na pozycji gracza na
"P". - Wypisz mapę, po jednym wierszu w każdej linii, bez spacji między komórkami.
Dla danych wejściowych 3, 4, 1 i 2 wynikiem jest:
....
..P.
....Spróbuj swoich sił
extends Node
func _ready():
var rows := int(OS.read_string_from_stdin())
var cols := int(OS.read_string_from_stdin())
var player_row := int(OS.read_string_from_stdin())
var player_col := int(OS.read_string_from_stdin())
var grid := []
# Zbuduj siatkę za pomocą zagnieżdżonych pętli
# Umieść gracza na mapie
# Wyświetl mapę
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