paires et ipairs

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

De nombreux scripts ont souvent besoin de traverser des dictionnaires ou des tableaux. Mais parfois, vous pouvez ne pas connaître le début et la fin de ces structures de données. Par exemple, un dictionnaire de joueurs peut changer, ou les joueurs peuvent avoir un inventaire sous forme de tableau de tailles variées.

Dans ces situations, vous pouvez utiliser pairs() et ipairs(). Ceux-ci peuvent être utilisés avec une boucle for pour parcourir chaque élément sans connaître les points de départ et d'arrivée.

Cet article couvrira leur utilisation, et proposera un exemple de script pratique où vous suivez les commandes dans un jeu de cuisine.

Dictionnaires et pairs()

pairs() est utilisé avec des dictionnaires. Un exemple est présenté ci-dessous.


local myDictionary = {
["Joueur Bleu"] = "Ana",
["Joueur Or"] = "Binh",
["Joueur Rouge"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " est " .. value)
end

pairs() peut être utilisé pour travailler avec la clé, la valeur ou les deux d'un élément de dictionnaire. Dans la boucle for ci-dessous, la première variable est la clé. La deuxième variable est la valeur. Le dictionnaire avec lequel vous souhaitez travailler est passé à pairs().


local inventory = {
["Briques d'Or"] = 43,
Carottes = 3,
Torches = 2,
}
print("Vous avez:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

Lorsqu'il est exécuté, le code affichera ce qui suit :


Vous avez:
43 Briques d'Or
3 Carottes
2 Torches

Tableaux et ipairs()

ipairs() est utilisé avec des tableaux. Le "i" dans ipairs() signifie "index". Utilisez ipairs() et les tableaux en combinaison avec une boucle for pour travailler avec des valeurs ordonnées comme les classements. Un exemple est ci-dessous.


local players = {"Ali", "Ben", "Cammy"}
for playerRank, playerName in ipairs(players) do
print("Gagnant #" .. playerRank .. " est " .. playerName)
end

Lorsqu'il est exécuté, le code affichera ce qui suit :


Gagnant #1 est Ali
Gagnant #2 est Ben
Gagnant #3 est Cammy

Pratique - Simulateur de Soupe de Restaurant

Créons une soupe pour un simulateur de restaurant où les joueurs choisissent parmi une liste d'ingrédients de soupe possibles. Les ingrédients seront stockés en tant que clés, et les valeurs commenceront comme faux afin que les joueurs n'obtiennent que ce qu'ils sélectionnent.

Utilisez pairs() pour voir ce qui a été choisi, puis ipairs() pour imprimer la liste des ingrédients.

  1. Créez un dictionnaire nommé menu. Ajoutez 3 à 5 paires clé-valeur où la clé est l'ingrédient et la valeur est fausse.


    local menu = {
    chou = false,
    boeuf = false,
    tomate = false,
    nouilles = false,
    }
  2. Sous le dictionnaire de menu, ajoutez un tableau vide qui sera rempli avec les choix du client plus tard.


    -- Soupe du client
    local selectedIngredients = {}
  3. Utilisez pairs() pour vérifier si chaque ingrédient du dictionnaire est marqué vrai ou faux. Si vrai, ajoutez l'ingrédient à la soupe.


    -- Soupe du client
    local selectedIngredients = {}
    -- Ajoute les choix du client à leur soupe
    for menuChoice, value in pairs(menu) do
    if value then
    table.insert(selectedIngredients, menuChoice)
    end
    end
  4. Répétez la commande au client. Dans le script, codez ce qui suit en dessous.

    • Vérifiez s'il y a un élément de menu dans selectedIngredients. Si c'est le cas, imprimez "Vous avez commandé une soupe avec : ".
    • Utilisez ipairs() pour parcourir le tableau selectedIngredients et imprimer chaque ingrédient.
    • Testez en changeant au moins un élément de menu en vrai.

    -- Imprime la commande de soupe depuis "selectedIngredients"
    if #selectedIngredients > 0 then
    print("Vous avez commandé une soupe avec : ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    end
  5. Dans l'instruction if qui vérifie s'il y a un élément de menu, ajoutez une condition else qui informe les clients si aucun ingrédient n'a été sélectionné.


    if #selectedIngredients > 0 then
    print("Vous avez commandé une soupe avec : ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    else
    print("Rien n'a été sélectionné. N'êtes-vous pas affamé ?")
    end

Défis optionnels

Voici quelques défis qui s'appliquent à l'utilisation de pairs et ipairs de différentes manières. Essayez de voir si vous pouvez construire le code pour ceux-ci.

Défi : Créer un PNJ de Serveur Au lieu d'utiliser la fenêtre de sortie, utilisez le PNJ de Introduction aux Tableaux pour créer un serveur qui prend les commandes des clients.

Défi : Permettre aux Joueurs de Passer des Commandes Permettez aux joueurs de sélectionner un ingrédient en touchant une pièce physique telle qu'un indicateur de proximité. Pour plus d'informations, voir Indicateurs de Proximité.

Défi Avancé : Fais-moi un Simulateur de Soupe Créez un simulateur de restaurant où les joueurs sont les chefs ! Les joueurs devront assembler des ingrédients pour correspondre à la commande donnée par le serveur.

  1. Créez des objets de jeu pour 3 à 5 ingrédients différents.
  2. Créez 3 à 5 recettes en utilisant des dictionnaires similaires à celui de cette leçon.
  3. Créez un tableau qui contient toutes les recettes.
  4. Sélectionnez une recette au hasard et utilisez un PNJ pour dire aux joueurs quels sont les ingrédients.
  5. Créez un nouveau dictionnaire pour composer une recette en fonction des ingrédients d'objets que le joueur touche.
  6. Comparez la recette du joueur à la recette choisie par le PNJ.
  7. Augmentez le défi en ajoutant une condition supplémentaire, comme un chronomètre.
©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.