产生3个对象,但连续没有重复 - Corona SDK

时间:2016-05-16 11:56:42

标签: lua corona

我希望在单独的列中生成3个对象(红色,绿色,蓝色),但不应该复制。所以不知怎的,我正在寻找它来检查其他列中的颜色并放置剩下的那个。

因此,如果已生成蓝色和红色,则最后一列将为绿色等。

我是否需要在表格中指定特定订单然后每次生成时我只是从该表中选择一个随机顺序,或者有更好的方法吗?

干杯

2 个答案:

答案 0 :(得分:1)

您必须始终确保只使用一次颜色。你如何以及何时这样做是完全无关紧要的。

当然,随机创建对象效率不高,因为您可能会创建一些无法使用的对象。

最好是创建3个不同的对象,每次随机删除其中一个,或者使用随机颜色生成一个对象,从颜色列表中删除。

答案 1 :(得分:0)

您可以创建颜色列表并将其随机播放。这样的事情:

math.randomseed( os.time() )

local colors = { 
    { 1,0,0 }, -- red
    { 0,1,0 }, -- green
    { 0,0,1 }, -- blue
}

local function shuffleTable( t )
    local rand = math.random 
    assert( t, "shuffleTable() expected a table, got nil" )
    local iterations = #t
    local j

    for i = iterations, 2, -1 do
        j = rand(i)
        t[i], t[j] = t[j], t[i]
    end
end

shuffleTable( colors )

local px = display.contentCenterX
local py = display.contentCenterY - 200
for i = 1, #colors do
    local rect = display.newRect( px, py + 100 * i, 200, 100 )
    rect.fill = colors[i]
end