Verschachtelte Schleifen mit 2D-Arrays
Teil des Abschnitts Logik & Ablaufsteuerung der GDScript-Journey von Coddy. Lektion 14 von 78.
Um jede Zelle eines 2D-Arrays zu durchlaufen, setzt du eine Schleife in eine andere. Die äußere Schleife durchläuft die Zeilen, und die innere Schleife durchläuft die Zellen der aktuellen Zeile:
var grid := [[1, 2, 3], [4, 5, 6]]
var total := 0
for row in grid:
for cell in row:
total += cell
print(total) # 21Wenn du die Position jeder Zelle benötigst, durchlaufe die Indizes. r ist der Zeilenindex, c der Spaltenindex, und die innere Schleife verwendet grid[r].size(), die Länge der aktuellen Zeile:
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]]Eine Zuweisung an cell in einer for cell in row-Schleife ändert das Raster nicht, weil cell eine Kopie der Zahl enthält. Ändere Zellen über ihre Indizes, wie oben.
Verschachtelte Schleifen erstellen ebenfalls ein Raster. Erstelle innerhalb der äußeren Schleife eine neue Zeile, fülle sie in der inneren Schleife und füge sie anschließend hinzu:
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.
....Die Zeile muss innerhalb der äußeren Schleife erstellt werden. Ein Array wird geteilt und nicht kopiert, wenn du es anhängst: Wenn du dasselbe row dreimal anhängst, sind die drei Zeilen ein und dasselbe Array, und town[1][2] = "P" setzt in jede Zeile ein P.
Aufgabe
EinfachZeichne die Karte einer Stadt. Das Programm liest vier ganze Zahlen ein, eine pro Zeile: die Anzahl der Zeilen, die Anzahl der Spalten, die Zeile des Spielers und die Spalte des Spielers. Die Position des Spielers liegt immer innerhalb der Karte.
- Erstelle
grid, ein 2D-Array mit so vielen Zeilen und Spalten, wobei jede Zelle"."enthält. Verwende verschachtelte Schleifen und erstelle für jede Zeile ein neues Zeilen-Array. - Setze die Zelle an der Position des Spielers auf
"P". - Gib die Karte aus, eine Zeile pro Zeile, ohne Leerzeichen zwischen den Zellen.
Für die Eingaben 3, 4, 1 und 2 lautet die Ausgabe:
....
..P.
....Probier es selbst
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 := []
# Erstelle das Raster mit verschachtelten Schleifen
# Platziere den Spieler auf der Karte
# Gib die Karte aus
pass
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablaufsteuerung
1Strings im Detail
String-MethodenIn Strings suchenErsetzen und TrimmenAufteilen und ZusammenfügenRückblick – Benutzernamen prüfen4Wörterbücher Teil 2
Verschachtelte WörterbücherArrays aus WörterbüchernWörterbücher zusammenführenWörterbücher kopierenWiederholung – Häufigkeitszähler10Fortgeschrittene Funktionen
Mehrere Werte zurückgebenLambda-Funktionen Teil 1Lambda-Funktionen Teil 2Wiederholung – Sortieren mit LambdaRekursive Funktionen Teil 1Rekursive Funktionen Teil 2Wiederholung – Verschachteltes Array summieren13Inventarverwaltungssystem
ProjektübersichtArtikel hinzufügen2Fortgeschrittene Entscheidungsfindung
Match mit VariablenMatch-GuardsArray-MusterDictionary-MusterMitgliedschaftsprüfungenRückblick – Befehlsparser5Kontaktbuch-Anwendung
Menü anzeigenKontakt hinzufügen8Schülerdatenverwaltung
ProjektübersichtSchüler hinzufügen3Mehrdimensionale Arrays
Grundlagen zu 2D-ArraysAuf Elemente in 2D-Arrays zugreifenVerschachtelte Schleifen mit 2D-ArraysWiederholung – 2D-ArraysGezackte ArraysGängige Muster für 2D-ArraysWiederholung – Spielbrett6Mengen mit Dictionaries
Was ist eine Menge?Dictionary als MengeHinzufügen und EntfernenVereinigung und SchnittmengeMengendifferenzWiederholung – Duplikate entfernen9Fortgeschrittene Datenaggregation
Werte summierenMinimum und Maximum findenBenutzerdefiniertes SortierenRückblick – Wörterbuch-Sortierer12Einfache Fehlerbehandlung
Was ist Fehlerbehandlung?Eingaben validierenGuard ClausesFehlercodes zurückgebenRückblick – Sichere DivisionÜbe selbstständig: Online-GDScript-Compiler