Menu
CoddyTech

Boucles imbriquées avec des tableaux 2D

Fait partie de la section Logique et flux d’exécution du Journey GDScript de Coddy. Leçon 14 sur 78.

Pour parcourir chaque cellule d’un tableau 2D, place une boucle à l’intérieur d’une autre. La boucle externe parcourt les lignes, et la boucle interne parcourt les cellules de la ligne actuelle :

var grid := [[1, 2, 3], [4, 5, 6]]
var total := 0
for row in grid:
	for cell in row:
		total += cell
print(total) # 21

Lorsque tu as besoin de la position de chaque cellule, parcours les indices. r est l’indice de ligne, c l’indice de colonne, et la boucle interne utilise grid[r].size(), la longueur de la ligne actuelle :

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]]

Attribuer une valeur à cell dans une boucle for cell in row ne modifie pas la grille, car cell contient une copie du nombre. Modifie les cellules en utilisant leurs indices, comme ci-dessus.

Les boucles imbriquées permettent également de construire une grille. Créez une nouvelle ligne dans la boucle externe, remplissez-la dans la boucle interne, puis ajoutez-la :

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 ligne doit être créée à l’intérieur de la boucle externe. Un tableau est partagé, et non copié, lorsque tu l’ajoutes : si tu ajoutes trois fois le même row, les trois lignes ne forment qu’un seul tableau, et town[1][2] = "P" place un P dans chaque ligne.

challenge icon

Défi

Facile

Dessine la carte d’une ville. Le programme lit quatre nombres entiers, un par ligne : le nombre de lignes, le nombre de colonnes, la ligne du joueur et la colonne du joueur. La position du joueur se trouve toujours à l’intérieur de la carte.

  1. Construis grid, un tableau 2D avec ce nombre de lignes et de colonnes, où chaque cellule contient ".". Utilise des boucles imbriquées et crée un nouveau tableau pour chaque ligne.
  2. Définis la cellule à la position du joueur sur "P".
  3. Affiche la carte, une ligne par ligne, sans espaces entre les cellules.

Pour les entrées 3, 4, 1 et 2, la sortie est :

....
..P.
....

Essayez vous-même

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 := []

	# Construire la grille avec des boucles imbriquées

	# Placer le joueur sur la carte

	# Afficher la carte
	pass
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et flux d’exécution

Entraînez-vous par vous-même : Compilateur GDScript en ligne