2016-05-16 91 views
0

我正在寻找在单独列中产生3个对象(红色,绿色,蓝色),但不应该重复。所以不知何故,我正在寻找它来检查其他列中的颜色,并放置剩下的那个。生成3个对象,但没有连续重复 - Corona SDK

因此,如果蓝色和红色都已经产生了,最后一列将是一个绿色等

我是否需要指定一个表内的具体命令,然后每次我产卵我刚刚从内选择一个随机的顺序表,还是有更好的方法?

干杯

+0

您可以将颜色附加到表中,然后在产生新对象时检查它是否存在于表中。拾取颜色时,选择一种新的颜色,当它不存在时产生。 –

+0

听起来好像它可以工作,但是一旦3种颜色的显示对象被销毁,我将如何再次循环它?我是否需要再次将它们从表格中删除? –

+0

@Brett,嗯。而当你只剩下一个产卵的时候,你会被卡住,随机重新检查并重新检查,直到它能够击中最后一个数字,对吧? –

回答

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 
1

您将一直需要确保只使用一次颜色。你怎么做,什么时候做,完全不相干。

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

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

+0

对象最终会破坏。我应该补充说,当它们到达某个地点时,它们被破坏并产生新的R/G/B块。我不知道为什么我说3个随机对象。我的意思是,我有3个物体已经制成了3种纯色,我只是不想在3行中使用相同的颜色 –