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]) # 1level[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.
Sfida
FacileScrivi una funzione chiamata get_tile con tre parametri:
grid: un array 2D di interi (dichiaralo comegrid: Array)row: un indice di rigacol: 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
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Stringhe in dettaglio
Metodi delle stringheRicerca nelle stringheSostituzione e trimDividere e unireRipasso - verifica del nome utente4Dizionari - Parte 2
Dizionari annidatiArray di dizionariUnire dizionariCopiare dizionariRiepilogo - Contatore di frequenza7Enumerazioni
Che cos'è un'enumerazione?Definire un'enumerazioneValori dell'enumerazioneEnumerazioni in MatchRiepilogo - Semaforo10Funzioni avanzate
Restituire più valoriFunzioni lambda - Parte 1Funzioni lambda - Parte 2Ripasso - Ordinamento con lambdaFunzioni ricorsive - Parte 1Funzioni ricorsive - Parte 2Ripasso - Somma di un array annidato13Sistema di gestione dell'inventario
Panoramica del progettoAggiungere un articolo2Decisioni avanzate
Match con variabiliGuardie di matchPattern per arrayPattern per dizionariVerifiche di appartenenzaRiepilogo - Parser di comandi5Applicazione Rubrica
Visualizzare il menuAggiungere un contatto8Gestione dei registri degli studenti
Panoramica del progettoAggiungi studente11Funzioni di ordine superiore
Il metodo mapIl metodo filterIl metodo reduceany e allRipasso - Validatore di emailRipasso - Elaboratore di numeri3Array multidimensionali
Fondamenti degli array 2DAccedere agli elementi di un array 2DCicli annidati con array 2DRipasso - Array 2DArray frastagliatiSchemi comuni con gli array 2DRipasso - Tabellone di gioco6Insiemi con i dizionari
Che cos'è un insieme?Il dizionario come insiemeAggiungere e rimuovereUnione e intersezioneDifferenza tra insiemiRiepilogo - Rimuovere i duplicati9Aggregazione avanzata dei dati
Somma dei valoriTrovare minimo e massimoOrdinamento personalizzatoRiepilogo - Ordinatore di dizionariEsercitati da solo: Compilatore GDScript online