Menu
CoddyTech

Nested Loop dengan Array 2D

Termasuk bagian Logika dan Alur dalam perjalanan GDScript di Coddy. Pelajaran 14 dari 78.

Untuk mengunjungi setiap sel dalam array 2D, letakkan satu perulangan di dalam perulangan lain. Perulangan luar menelusuri baris, dan perulangan dalam menelusuri sel pada baris saat ini:

var grid := [[1, 2, 3], [4, 5, 6]]
var total := 0
for row in grid:
	for cell in row:
		total += cell
print(total) # 21

Saat kamu membutuhkan posisi setiap sel, lakukan perulangan pada indeks. r adalah indeks baris, c adalah indeks kolom, dan perulangan dalam menggunakan grid[r].size(), panjang baris saat ini:

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]]

Memberikan nilai ke cell dalam perulangan for cell in row tidak mengubah grid, karena cell menyimpan salinan angka. Ubah sel melalui indeksnya, seperti di atas.

Perulangan bersarang juga membentuk kisi. Buat baris baru di dalam perulangan luar, isi baris itu di dalam perulangan dalam, lalu tambahkan:

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

Baris harus dibuat di dalam perulangan luar. array digunakan bersama, bukan disalin, saat kamu menambahkannya: jika kamu menambahkan row tiga kali, ketiga baris tersebut adalah satu array, dan town[1][2] = "P" menempatkan P di setiap baris.

challenge icon

Tantangan

Mudah

Gambarlah peta sebuah kota. Program membaca empat bilangan bulat, satu per baris: jumlah baris, jumlah kolom, baris pemain, dan kolom pemain. Posisi pemain selalu berada di dalam peta.

  1. Buat grid, sebuah array 2D dengan jumlah baris dan kolom tersebut, dengan setiap sel berisi ".". Gunakan perulangan bersarang, dan buat array baris baru untuk setiap baris.
  2. Atur sel pada posisi pemain menjadi "P".
  3. Cetak peta, satu baris per baris, tanpa spasi di antara sel.

Untuk input 3, 4, 1 dan 2, outputnya adalah:

....
..P.
....

Coba sendiri

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 := []

	# Buat grid dengan perulangan bersarang

	# Tempatkan pemain di peta

	# Cetak peta
	pass
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler GDScript online