2016-05-16 6 views
0

3つのオブジェクト(赤、緑、青)を別々の列に作成しようとしましたが、重複しないようにしてください。それで、どういうわけか、私はそれを探して、他の列の色をチェックし、残っているものを置きます。青と赤がすでに起動されている場合 コロナSDK

だから、最後の列は

は、私は、テーブル内の特定の順序を指定する必要がある場合、その後、毎回私は産卵私はちょうどその中からランダムな順序を選択するなどのグリーンになりますテーブル、またはそこに良い方法はありますか?

乾杯

+0

テーブルに使用されている色を追加し、新しいオブジェクトを生成するときは、テーブルに最初に存在するかどうかを確認します。選択された色が存在する間、新しい色を選択します。存在しない場合は、生成します。 –

+0

それはうまくいくように聞こえますが、3色の表示オブジェクトが破棄されたら、どのように再ループするのですか?私は再びテーブルからそれらを削除する必要がありますか? @Brett、uh-huh。 –

+0

そして、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 
1

色は必ず1回のみ使用するようにしてください。いつ、どのようにしてそれを行うのは完全に無関係です。

もちろん、オブジェクトをランダムに作成することは、使用できないものを作成するリスクがあるため、あまり効率的ではありません。

3つの異なるオブジェクトを作成し、毎回無作為に1つを削除するか、ランダムな色を使用してオブジェクトを生成するか、カラーリストから削除するのが最適です。

+0

その後、オブジェクトは最終的に破棄されます。私は彼らが特定の地点に達すると、彼らは破壊され、新しいR/G/Bブロックが生まれると付け加えるべきです。なぜ私は3つのランダムなオブジェクトを言ったのか分からない。私が意味したのは、3つのオブジェクトが3つのソリッドカラーで作成されていて、3つの行に同じ色が欲しくないということです –

関連する問題