2D 배열과 중첩 반복문
Coddy GDScript 여정의 논리와 흐름 섹션에 포함된 레슨. 78개 중 14번째.
2D 배열의 모든 셀을 방문하려면 루프 하나를 다른 루프 안에 넣으세요. 바깥쪽 루프는 행을 순회하고, 안쪽 루프는 현재 행의 셀을 순회합니다:
var grid := [[1, 2, 3], [4, 5, 6]]
var total := 0
for row in grid:
for cell in row:
total += cell
print(total) # 21각 셀의 위치가 필요할 때는 인덱스를 반복문으로 순회하세요. r은 행 인덱스이고, c는 열 인덱스이며, 내부 반복문은 현재 행의 길이인 grid[r].size()를 사용합니다:
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]]for cell in row 루프에서 cell에 값을 할당해도 그리드는 변경되지 않습니다. cell에는 숫자의 복사본이 들어 있기 때문입니다. 위에서처럼 인덱스를 통해 셀을 변경하세요.
중첩 루프는 격자도 만듭니다. 바깥쪽 루프 안에서 새 행을 만들고, 안쪽 루프에서 채운 다음, 추가하세요:
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.
....행은 바깥쪽 루프 안에서 만들어야 합니다. 배열을 추가할 때 배열은 복사되지 않고 공유됩니다. 같은 row를 세 번 추가하면 세 행은 하나의 배열이며, town[1][2] = "P"를 실행하면 모든 행에 P가 들어갑니다.
챌린지
쉬움마을 지도를 그리세요. 프로그램은 한 줄에 하나씩 네 개의 정수를 읽습니다. 행의 수, 열의 수, 플레이어의 행, 플레이어의 열입니다. 플레이어 위치는 항상 지도 안에 있습니다.
grid를 만드세요. 지정된 수의 행과 열로 이루어진 2차원 배열이며, 모든 셀은"."입니다. 중첩 루프를 사용하고, 각 행마다 새 행 배열을 만드세요.- 플레이어 위치의 셀을
"P"로 설정하세요. - 셀 사이에 공백을 넣지 말고, 한 줄에 한 행씩 지도를 출력하세요.
입력이 3, 4, 1, 2일 때 출력은 다음과 같습니다.
....
..P.
....직접 해보기
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 := []
# 중첩 반복문으로 격자를 만듭니다
# 플레이어를 맵에 배치합니다
# 맵을 출력합니다
pass
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리와 흐름의 모든 레슨
직접 연습해 보세요: 온라인 GDScript 컴파일러