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) # 21Quando 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.
Sfida
FacileDisegna 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.
- 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. - Imposta la cella nella posizione del giocatore su
"P". - 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
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