쌍과 이중

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

많은 스크립트는 종종 사전이나 배열을 통과해야 합니다. 그러나 때로는 이러한 데이터 구조의 시작과 끝을 알지 못할 수 있습니다. 예를 들어, 플레이어의 사전이 변경되거나 플레이어의 배열 인벤토리가 다양한 크기를 가질 수 있습니다.

이러한 경우 pairs()ipairs() 을 사용할 수 있습니다. 이 두 개는 알 수 없는 시작 및 끝점이 없는 모든 요소를 거칠 수 있는 반복 문을 사용할 수 있습니다.

이 문서에서는 사용 방법을 설명하고 쿠킹 게임에서 레스토랑 주문을 추적하는 실제 스크립트 예시가 있습니다.

사전과 쌍()

pairs()사전 과 함께 사용됩니다. 아래에 예가 보여집니다.


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

pairs() 는 사전 요소의 키, 값 또는 둘 중 하나를 사용하여 작동할 수 있습니다. 아래의 for 루프에서 첫 번째 변수는 키입니다. 두 번째 변수는 값입니다. 사전에 작업하는 디텍터는 pairs() 로 패스됩니다.


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

실행되면 팔로잉출력합니다.


You have:
43 Gold Bricks
3 Carrots
2 Torches

배열 및 ipairs()

ipairs() 는 배열과 함께 사용됩니다 배열 . "i" 는 순위표와 같은 순위 값을 작동하도록 배열과 함께 사용됩니다. 배열과 순위 값을 조합하여 순위 값을 작동하는 예는 아래에 나와 있습니다.


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

실행되면 팔로잉출력합니다.


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

연습 - 레스토랑 수프 시뮬레이터

가능한 수프 재료 목록에서 플레이어가 선택할 수 있는 레스토랑 시뮬레이터에 대한 몇 가지 수프를 만드십시오. 재료는 열로 저장되며 값은 시작 시 가짜로 시작되므로 플레이어가 선택한 것만 표시됩니다.

pairs()를 사용하여 선택한 항목을 확인한 다음 ipairs()를 사용하여 목록을 인쇄합니다.

  1. 새로운 사전 을 생성하여 이름이 number1 입니다. 키가 성분이고 값이 거짓인 3 - 5 개의 키 값 쌍을 추가합니다.


    local menu = {
    cabbage = false,
    beef = false,
    tomato = false,
    noodles = false,
    }
  2. 메뉴 사전에 空 배열 을 추가하여 나중에 고객의 선택으로 채워집니다.


    -- 고객의 수프
    local selectedIngredients = {}
  3. pairs()를 사용하여 사전에 있는 모든 재료가 참이거나 거짓인지 확인하십시오. 참이면 스프에 재료를 추가합니다.


    -- 고객의 수프
    local selectedIngredients = {}
    -- 고객의 선택을 그들의 수프에 추가합니다.
    for menuChoice, value in pairs(menu) do
    if value then
    table.insert(selectedIngredients, menuChoice)
    end
    end
  4. 고객에게 다시 주문을 반복하십시오. 스크립트에서 다음을 코드화합니다.

    • SelectedIngredients 에 메뉴 항목이 있는지 확인하십시오. 있으면 "You ordered soup with: " 를 인쇄합니다.
    • ipairs()를 사용하여 배열 selectedIngredients을 통과하고 각 재료를 인쇄합니다.
    • 적어도 하나의 메뉴 항목을 트루로 변경하여 테스트합니다.

    -- 선택한 재료에서 수프 주문을 인쇄합니다.
    if #selectedIngredients > 0 then
    print("You ordered soup with: ")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    end
  5. 메뉴 항목이 있는지 여부를 확인하는 if 아이템다른 조건을 추가하여 고객에게 선택한 재료가 없는지 알립니다.


    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

선택적 도전

다양한 방법으로 쌍과 IPairs를 사용하여 문제가 적용되는 일부 도전이 있습니다. 이 코드를 빌드할 수 있는지 확인하십시오. 도전하기 : 출력 창을 사용하는 대신 배열 소개 에서 NPC를 생성하여 손님의 주문을 받도록 하십시오. 도전하기 : 플레이어가 주문을 하도록 허용 플레이어가 물리적 부품을 만지고 프로모션 메시지를 선택하도록 허용 자세한 내용은 프로모션 메시지를 참조하십시오. 고급 도전 : 음식 시뮬레이터 만들기 플레이어가 셰프인 음식 시뮬레이터 레스토랑 시뮬레이터를 만들어 플레이어가 주문을 일치시키는 주문을 제공해야 합니다.

  1. 3 - 5개의 다른 재료를 위한 게임 내 소도구 생성.
  2. 이 수업에서 사용한 사전과 같은 3 - 5 개의 레시피를 만듭니다.
  3. 모든 레시피를 보관할 배열을 생성합니다.
  4. 레시피를 랜덤으로 선택하고 NPC를 사용하여 플레이어에게 재료가 무엇인지 알려주십시오.
  5. 플레이어가 터치하는 소도구 성분을 기반으로 새 사전을 생성하여 레시피를 작성하십시오.
  6. NPC가 선택한 레시피와 플레이어의 레시피를 비교하십시오.
  7. 타이머와 같은 추가 조건을 추가하여 도전을 증가시킵니다.