0

在我的桌面模拟器模块中,我有一个袋子,当袋子里有东西掉进时,这个emptyContents()函数就会被调用。例如,我可以在袋子里放 15 个骰子。

emptyContents()函数中,我遍历包中的对象。但是正如你所看到的,我必须输入多个 if 语句来捕捉放入的骰子数量,因为我希望骰子在不同的位置产生。

内容变量是袋子中骰子的数量。

function emptyContents()
    contents = self.getObjects()

    for i, _ in ipairs(self.getObjects()) do
      if i <= 6 then
        self.takeObject(setPosition(5, -3))
      elseif i <= 12 then
        self.takeObject(setPosition(12.4,-5))
      elseif i <= 18 then
        self.takeObject(setPosition(19.8,-7))
      end
    end
end

如何使函数不那么静态?因为现在我需要为每组 6 个骰子编写 if 语句。

4

1 回答 1

1

也许你可以添加这样的配置:

local t = {
    {6, 5, -3},
    {12, 12.4, -5},
    {18, 19.8, -7},
}

function emptyContents()
    contents = self.getObjects()

    for i, _ in ipairs(self.getObjects()) do
        for _, v in ipairs(t) do
            local l, p1, p2 = unpack(v)
            if i <= l then
                self.takeObject(setPosition(p1, p2))
                break
            end
        end
    end
end
于 2020-04-08T12:05:44.570 回答