Menu
CoddyTech

Cicli annidati con array 2D

Fa parte della sezione Logica e flusso del percorso GDScript di Coddy. Lezione 14 di 78.

Per visitare ogni cella di un array 2D, inserisci un ciclo dentro un altro. Il ciclo esterno scorre le righe e quello interno scorre le celle della riga corrente:

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

Quando ti serve la posizione di ogni cella, scorri gli indici. r è l'indice della riga, c quello della colonna e il ciclo interno usa grid[r].size(), la lunghezza della riga corrente:

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

Assegnare un valore a cell in un ciclo for cell in row non modifica la griglia, perché cell contiene una copia del numero. Modifica le celle tramite i loro indici, come sopra.

Anche i cicli annidati creano una griglia. Crea una nuova riga all'interno del ciclo esterno, riempila nel ciclo interno, poi aggiungila:

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

La riga deve essere creata all'interno del ciclo esterno. Un array è condiviso, non copiato, quando lo aggiungi: se aggiungi lo stesso row tre volte, le tre righe sono un unico array e town[1][2] = "P" inserisce una P in ogni riga.

challenge icon

Sfida

Facile

Disegna la mappa di una città. Il programma legge quattro numeri interi, uno per riga: il numero di righe, il numero di colonne, la riga del giocatore e la colonna del giocatore. La posizione del giocatore è sempre all'interno della mappa.

  1. Costruisci grid, un array 2D con quel numero di righe e colonne, in cui ogni cella è ".". Usa cicli annidati e crea un nuovo array di riga per ogni riga.
  2. Imposta la cella nella posizione del giocatore su "P".
  3. Stampa la mappa, una riga per linea, senza spazi tra le celle.

Per gli input 3, 4, 1 e 2, l'output è:

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

Provalo tu

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

	# Costruisci la griglia con cicli annidati

	# Posiziona il giocatore sulla mappa

	# Stampa la mappa
	pass
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore GDScript online