2016-05-16 61 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行中使用相同的顏色 –