párrafos e ipares

*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 tendrán que pasar por diccionarios o arrays.Pero a veces, es posible que no conozcas el comienzo 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 arrays de diferentes tamaños.

En estas situaciones, puedes usar pairs() y ipairs().Estos se pueden usar 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 de guión práctico donde rastrea las órdenes de restaurante en un juego de cocina.

Diccionarios y pares()

pairs() se usa con diccionarios . Un ejemplo se ve a continuación.


local myDictionary = {
["Blue Player"] = "Ana",
["Gold Player"] = "Binh",
["Red Player"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " is " .. value)
end

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


local inventory = {
["Gold Bricks"] = 43,
Carrots = 3,
Torches = 2,
}
print("You have:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

Cuando se ejecute, el código imprimirá lo siguiendo:


You have:
43 Gold Bricks
3 Carrots
2 Torches

Matices y ipairs()

ipairs() se usa con arrays .El "i" en ipairs() representa "índice". Usa ipairs() y arrays en combinación con un bucle for para trabajar con valores ordenados como tablas de clasificación.Un ejemplo está a continuación.


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

Cuando se ejecute, el código imprimirá lo siguiendo:


Winner #1 is Ali
Winner #2 is Ben
Winner #3 is Cammy

Práctica - Simulador de sopa de restaurante

Hagamos una sopa para un simulador de restaurante en el que los jugadores eligen de una lista de posibles ingredientes de sopa.Los ingredientes se almacenarán como claves y los valores comenzarán como falsos para que los jugadores solo obtengan lo que elegir.

Usa pairs() para ver lo que se seleccionó, y luego ipairs() para imprimir la lista de ingredientes.

  1. Crea un nuevo diccionario llamado donde la clave es el ingrediente y el valor es falso. Añade 3 - 5 pares clave-valor donde la clave es el ingrediente y el valor es falso.


    local menu = {
    cabbage = false,
    beef = false,
    tomato = false,
    noodles = false,
    }
  2. Debajo del diccionario de menú, agregue un array vacío que se llenará con las elecciones del cliente más tarde.


    -- Sopa del cliente
    local selectedIngredients = {}
  3. Usa pairs() para comprobar si cada ingrediente en el diccionario está marcado como verdadero o falso. Si es verdadero, agrégalo a la sopa.


    -- Sopa del cliente
    local selectedIngredients = {}
    -- Añade las elecciones del cliente a su sopa
    for menuChoice, value in pairs(menu) do
    if value then
    table.insert(selectedIngredients, menuChoice)
    end
    end
  4. Repita el pedido al cliente. En el script, codifique lo siguiente a continuación.

    • Compruebe si hay un elemento de menú en selectedIngredients . Si es así, imprima "You ordered soup with: " .
    • Usa ipairs() para recorrer el selectedIngredients array y imprimir cada ingrediente.
    • Prueba cambiando al menos un elemento de menú a verdadero.

    -- Imprime la orden de sopa de "ingredientes seleccionados"
    if #selectedIngredients > 0 then
    print("You ordered soup with: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    end
  5. En la declaración if que verifica si hay un objetode menú, agregue una condición else que le diga a los clientes si no se seleccionaron ingredientes.


    if #selectedIngredients > 0 then
    print("You ordered soup with: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    else
    print("Nothing was selected. Are you not hungry?")
    end

Desafíos opcionales

A continuación se muestran algunos desafíos que se aplican utilizando pares e ipares de diferentes maneras. Intenta ver si puedes construir el código para estos. Desafío : Crea un NPC de camarero en lugar de usar la ventana de salida, usa el NPC de Intro a los arrays para crear un camarero que tome pedidos de clientes. Desafío : Permitir a los jugadores realizar pedidos Permite a los jugadores seleccionar un ingrediente tocando una parte física como una solicitud de proximidad.Para obtener más información, consulte Instrucciones de proximidad. Desafío avanzado : Make Me Some Soup Simulator Crea un simulador de restaurante donde los jugadores sean los chefs! Los jugadores tendrán que poner juntos los ingredientes para que coincidan con el pedido dado por el camarero.

  1. Crea atrezos en el juego para 3 - 5 ingredientes diferentes.
  2. Crea 3 - 5 recetas usando diccionarios similares al de esta lección.
  3. Crea un array que contenga todas las recetas.
  4. Seleccione aleatoriamente una receta y utilice un NPC para decirle a los jugadores cuáles son los ingredientes.
  5. Crea un nuevo diccionario para crear una receta que se base en qué ingredientes de propiedad toca el jugador.
  6. Compara la receta del jugador con la receta elegida por el PNJ.
  7. Aumenta el desafío agregando una condición adicional, como un temporizador.