Menu
CoddyTech

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]) # 1

level[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.

challenge icon

Aufgabe

Einfach

Schreibe eine Funktion namens get_tile mit drei Parametern:

  1. grid: ein 2D-Array aus Ganzzahlen (deklariere es als grid: Array)
  2. row: ein Zeilenindex
  3. col: 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
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablaufsteuerung

Übe selbstständig: Online-GDScript-Compiler