Auf Elemente in 2D-Arrays zugreifen
Teil des Abschnitts Logik & Ablaufsteuerung der GDScript-Journey von Coddy. Lektion 13 von 78.
Um eine Zelle eines 2D-Arrays zu erreichen, verwende zwei Indizes: Der erste wählt die Zeile aus, der zweite die Spalte innerhalb dieser Zeile. Beide beginnen bei 0.
var level := [
[1, 1, 1, 1],
[1, 0, 2, 1],
[1, 1, 1, 1]
]
print(level[1][2]) # 2 (Zeile 1, Spalte 2)
print(level[0][0]) # 1level[1] gibt die Zeile [1, 0, 2, 1] zurück, und [2] wählt dann Index 2 dieser Zeile aus. Negative Indizes zählen vom Ende, wie bei jedem Array: level[-1][-1] ist die Zelle unten rechts.
Weise einer Zelle einen Wert zu, um sie zu ändern. Wenn der Spieler die Münze aufhebt, wird ihr Feld zum Boden:
level[1][2] = 0
print(level[1]) # [1, 0, 0, 1]Ein Index außerhalb des Gitters ist ein Fehler, der das Programm anhält: level[3][0] schlägt fehl, weil die Zeilen von 0 bis 2 reichen. Wenn die Indizes aus einer Eingabe oder einer Berechnung stammen, überprüfe sie zuerst anhand der Größe des Gitters:
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")Dies gibt Outside the map aus, weil Spalte 5 nicht existiert. and stoppt bei der ersten Bedingung, die false ist, sodass level[row] nur gelesen wird, wenn die Zeile existiert.
Aufgabe
EinfachSchreibe eine Funktion namens get_tile mit drei Parametern:
grid: ein 2D-Array aus Ganzzahlen (deklariere es alsgrid: Array)row: ein Zeilenindexcol: ein Spaltenindex
Sie gibt den Wert an dieser Zeile und Spalte zurück. Wenn row oder col außerhalb des Rasters liegt (kleiner als 0 oder nicht kleiner als die Anzahl der Zeilen oder Spalten), gibt sie stattdessen -1 zurück. Negative Indizes gelten als außerhalb.
Zum Beispiel gibt get_tile([[1, 2, 3], [4, 5, 6]], 1, 2) den Wert 6 zurück, und get_tile([[1, 2], [3, 4]], 2, 1) gibt -1 zurück.
Die Tests rufen get_tile() selbst auf und überprüfen den zurückgegebenen Wert. Rufe sie nicht auf und gib nichts aus.
Probier es selbst
func get_tile(grid: Array, row: int, col: int):
# Schreibe hier den Code
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