Menu
CoddyTech

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) # 21

Gdy 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.

challenge icon

Wyzwanie

Łatwy

Narysuj 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.

  1. 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.
  2. Ustaw komórkę na pozycji gracza na "P".
  3. 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
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