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) # 21Lorsque 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.
Défi
FacileDessine 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.
- 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. - Définis la cellule à la position du joueur sur
"P". - 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
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
1Les chaînes de caractères en profondeur
Méthodes des chaînesRechercher dans les chaînesRemplacer et supprimer les espacesDécouper et joindreRécapitulatif - Vérifier un nom d’utilisateur4Dictionnaires, partie 2
Dictionnaires imbriquésTableaux de dictionnairesFusionner des dictionnairesCopier des dictionnairesRécapitulatif - Compteur de fréquence7Énumérations
Qu’est-ce qu’une énumération ?Définir une énumérationValeurs d’une énumérationÉnumérations avec matchRécapitulatif - Feu de circulation10Fonctions avancées
Renvoyer plusieurs valeursFonctions lambda, partie 1Fonctions lambda, partie 2Récapitulatif - Tri avec lambdaFonctions récursives, partie 1Fonctions récursives, partie 2Récapitulatif - Somme d’un tableau imbriqué13Système de gestion des stocks
Présentation du projetAjouter un article2Prise de décision avancée
Correspondance avec des variablesGardes de correspondanceMotifs de tableauMotifs de dictionnaireVérifications d’appartenanceRécapitulatif – Analyseur de commandes5Application de carnet d’adresses
Afficher le menuAjouter un contact8Gestionnaire des dossiers étudiants
Aperçu du projetAjouter un étudiant3Tableaux multidimensionnels
Bases des tableaux 2DAccéder aux éléments d’un tableau 2DBoucles imbriquées avec des tableaux 2DRécapitulatif - Tableaux 2DTableaux irréguliersMotifs courants des tableaux 2DRécapitulatif - Plateau de jeu6Les ensembles avec les dictionnaires
Qu’est-ce qu’un ensemble ?Un dictionnaire comme ensembleAjouter et supprimerUnion et intersectionDifférence d’ensemblesRécapitulatif – Supprimer les doublons9Agrégation avancée de données
Additionner des valeursTrouver le minimum et le maximumTri personnaliséRécapitulatif - Trieur de dictionnairesEntraînez-vous par vous-même : Compilateur GDScript en ligne