Menu
CoddyTech

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) # 21

Wenn 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.

challenge icon

Aufgabe

Einfach

Zeichne 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.

  1. 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.
  2. Setze die Zelle an der Position des Spielers auf "P".
  3. 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
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