使用for循环在Corona中设置对象的x位置

在我的游戏类中,我像这样从另一个类中调用两个对象(objA和objB):

for i=1, countA do
pos.x = pos.x + 15
objA = objClass:new("objClass", group, pos)
wArray[i]=i
end

for j=1, countB do
pos.x = pos.x + xPoint
objB = objClass:new("objCLass", group, pos)
end

我需要for循环,因为我想在我的游戏类中添加随机数量的这些对象。我的问题是,我想要同时在我的游戏中定位a和b。例如:objA - objA - objB - objB - objA或objB - objA - objB - objB。然而,考虑到我的当前代码,我最终得到的模式将是先添加所有objA,然后再添加所有objB对象。

我知道简单的答案是只使用一个for循环,但我看到的问题是我需要在我的游戏中至少有1个objA和1个objB。我不能全部是objB或全部是objA。达到随机位置的最佳方法是什么?提前感谢。

点赞
用户2221331
用户2221331

如果你想在A和B之间随机选择,你可以尝试以下代码:

local ab = {}

for i = 1,countA+countB do
    ab[i] = i<=countA and "A" or "B"
end

for i = 1,countA+countB do
    local idx = math.random(#ab)
    local choice = table.remove(ab,idx)

    if choice=="A" then
        pos.x = pos.x + 15
        objA = objClass:new("objClass", group, pos)
    else
        pos.x = pos.x + xPoint
        objB = objClass:new("objClass", group, pos)
    end
end
2013-04-04 09:44:26
用户1847592
用户1847592
-- 准备计数器(只是一个示例)
local countA = math.random(3)  -- 1,2,3
local countB = math.random(5)  -- 1,2,3,4,5

-- 生成排列
repeat
    if math.random(1-countB, countA) > 0 then
        countA = countA - 1
        -- 对 objA 做一些处理
    else
        countB = countB - 1
        -- 对 objB 做一些处理
    end
until countA + countB == 0
2013-04-04 09:45:21