Menu
CoddyTech

Accedere agli elementi di un array 2D

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

Per raggiungere una cella di un array 2D, usa due indici: il primo seleziona la riga, il secondo seleziona la colonna all'interno di quella riga. Entrambi partono da 0.

var level := [
	[1, 1, 1, 1],
	[1, 0, 2, 1],
	[1, 1, 1, 1]
]
print(level[1][2]) # 2 (riga 1, colonna 2)
print(level[0][0]) # 1

level[1] restituisce la riga [1, 0, 2, 1], e [2] seleziona poi l'indice 2 di quella riga. Gli indici negativi si contano dalla fine, come in qualsiasi array: level[-1][-1] è la cella in basso a destra.

Assegna un valore a una cella per modificarla. Quando il giocatore raccoglie la moneta, la sua casella diventa pavimento:

level[1][2] = 0
print(level[1]) # [1, 0, 0, 1]

Un indice fuori dalla griglia causa un errore che arresta il programma: level[3][0] non funziona perché le righe vanno da 0 a 2. Quando gli indici provengono da un input o da un calcolo, controllali prima in base alle dimensioni della griglia:

var row := 2
var col := 5
if row >= 0 and row < level.size() and col >= 0 and col < level[row].size():
	print(level[row][col])
else:
	print("Outside the map")

Questo stampa Outside the map, perché la colonna 5 non esiste. and si ferma alla prima condizione che è false, quindi level[row] viene letto solo quando la riga esiste.

challenge icon

Sfida

Facile

Scrivi una funzione chiamata get_tile con tre parametri:

  1. grid: un array 2D di interi (dichiaralo come grid: Array)
  2. row: un indice di riga
  3. col: un indice di colonna

Restituisce il valore in quella riga e colonna. Se row o col è fuori dalla griglia (minore di 0 oppure non minore del numero di righe o colonne), restituisce invece -1. Gli indici negativi sono considerati fuori dalla griglia.

Per esempio, get_tile([[1, 2, 3], [4, 5, 6]], 1, 2) restituisce 6 e get_tile([[1, 2], [3, 4]], 2, 1) restituisce -1.

I test chiamano direttamente get_tile() e verificano il valore restituito. Non chiamarla e non stampare nulla.

Provalo tu

func get_tile(grid: Array, row: int, col: int):
	# Scrivi il codice qui
	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