pares e ipairs

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Muchos scripts a menudo necesitarán recorrer diccionarios o arreglos. Pero a veces, es posible que no conozcas el inicio y el final de estas estructuras de datos. Por ejemplo, un diccionario de jugadores puede estar cambiando, o los jugadores pueden tener un inventario de arreglos de tamaños variables.

En estas situaciones, puedes usar pares() y ipares(). Estos pueden ser utilizados con un bucle for para recorrer cada elemento sin puntos de inicio y final conocidos.

Este artículo cubrirá su uso y tendrá un ejemplo práctico de un script donde se rastrean los pedidos de un restaurante en un juego de cocina.

Diccionarios y pares()

pares() se utiliza con diccionarios. Un ejemplo se muestra a continuación.


local miDiccionario = {
["Jugador Azul"] = "Ana",
["Jugador Dorado"] = "Binh",
["Jugador Rojo"] = "Cate",
}
for clave, valor in pairs(miDiccionario) do
print(clave .. " es " .. valor)
end

pares() puede ser utilizado para trabajar con la clave de un elemento de diccionario, valor o ambos. En el bucle for a continuación, la primera variable es la clave. La segunda variable es el valor. El diccionario con el que deseas trabajar se pasa a pares().


local inventario = {
["Ladrillos Dorados"] = 43,
Zanahorias = 3,
Antorchas = 2,
}
print("Tienes:")
for nombreElemento, valorElemento in pairs(inventario) do
print(valorElemento, nombreElemento)
end

Cuando se ejecuta, el código imprimirá lo siguiente:


Tienes:
43 Ladrillos Dorados
3 Zanahorias
2 Antorchas

Arreglos y ipares()

ipares() se utiliza con arreglos. La "i" en ipares() significa "índice". Usa ipares() y arreglos en combinación con un bucle for para trabajar con valores ordenados como tableros de lideres. Un ejemplo se muestra a continuación.


local jugadores = {"Ali", "Ben", "Cammy"}
for rangoJugador, nombreJugador in ipairs(jugadores) do
print("Ganador #" .. rangoJugador .. " es " .. nombreJugador)
end

Cuando se ejecuta, el código imprimirá lo siguiente:


Ganador #1 es Ali
Ganador #2 es Ben
Ganador #3 es Cammy

Práctica - Simulador de Sopa de Restaurante

Hagamos un poco de sopa para un simulador de restaurante donde los jugadores eligen de una lista de posibles ingredientes para la sopa. Los ingredientes se almacenarán como claves, y los valores comenzarán como falsos para que los jugadores solo reciban lo que seleccionen.

Usa pares() para ver lo que fue seleccionado, y luego ipares() para imprimir la lista de ingredientes.

  1. Crea un nuevo diccionario llamado menú. Agrega de 3 a 5 pares clave-valor donde la clave es el ingrediente y el valor es falso.


    local menú = {
    repollo = false,
    carne = false,
    tomate = false,
    fideos = false,
    }
  2. Debajo del diccionario del menú, agrega un arreglo vacío que se llenará con las elecciones del cliente más tarde.


    -- Sopa del cliente
    local ingredientesSeleccionados = {}
  3. Usa pares() para verificar si cada ingrediente en el diccionario está marcado como verdadero o falso. Si es verdadero, agrega el ingrediente a la sopa.


    -- Sopa del cliente
    local ingredientesSeleccionados = {}
    -- Agrega las elecciones del cliente a su sopa
    for elecciónMenú, valor in pairs(menú) do
    if valor then
    table.insert(ingredientesSeleccionados, elecciónMenú)
    end
    end
  4. Repite el pedido al cliente. En el script, codifica lo siguiente a continuación.

    • Verifica si hay un elemento de menú en ingredientesSeleccionados. Si es así, imprime "Pediste sopa con: ".
    • Usa ipares() para recorrer el arreglo ingredientesSeleccionados e imprimir cada ingrediente.
    • Prueba cambiando al menos un elemento del menú a verdadero.

    -- Imprime el pedido de sopa de "ingredientesSeleccionados"
    if #ingredientesSeleccionados > 0 then
    print("Pediste sopa con: ")
    for índice, ingredienteSopa in ipairs(ingredientesSeleccionados) do
    print(ingredienteSopa)
    end
    end
  5. En la declaración if que verifica si hay un elemento de menú, agrega una condición else que le dice a los clientes si no se seleccionaron ingredientes.


    if #ingredientesSeleccionados > 0 then
    print("Pediste sopa con: ")
    for índice, ingredienteSopa in ipairs(ingredientesSeleccionados) do
    print(ingredienteSopa)
    end
    else
    print("No se eligió nada. ¿No tienes hambre?")
    end

Desafíos opcionales

A continuación, se presentan algunos desafíos que aplican el uso de pares e ipares de diferentes maneras. Intenta ver si puedes construir el código para estos.

Desafío: Crear un NPC de Camarero En lugar de usar la ventana de Salida, usa el NPC de Introducción a los Arreglos para crear un camarero que tome los pedidos de los clientes.

Desafío: Permitir que los Jugadores Hagan Pedidos Permite que los jugadores seleccionen un ingrediente tocando una parte física como un aviso de proximidad. Para obtener más información, consulta Avisos de Proximidad.

Desafío Avanzado: Crea un Simulador de Sopa Crea un simulador de restaurante donde los jugadores son los chefs. ¡Los jugadores tendrán que reunir ingredientes para coincidir con el pedido que les da el camarero!

  1. Crea props dentro del juego para 3 a 5 ingredientes diferentes.
  2. Crea 3 a 5 recetas usando diccionarios similares a los de esta lección.
  3. Crea un arreglo que contenga todas las recetas.
  4. Selecciona una receta al azar y usa un NPC para decir a los jugadores cuáles son los ingredientes.
  5. Crea un nuevo diccionario para hacer una receta basada en los ingredientes de props que toca el jugador.
  6. Compara la receta del jugador con la receta elegida por el NPC.
  7. Aumenta la dificultad agregando una condición extra, como un temporizador.
©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.