在我的游戏类中,我从另一个类(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。但是,根据我当前的代码,在添加所有objB对象之前,我最终获得的模式将全部为objA。
我知道简单的答案就是只使用一个for循环,但我看到的问题是我需要在游戏中至少有1个objA和1个objB。我无法拥有所有objB或所有objA。什么是让他们随机定位的最佳方法?提前谢谢。
答案 0 :(得分:2)
如果你想在As和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
答案 1 :(得分:1)
-- Prepare your counters (just an example)
local countA = math.random(3) -- 1,2,3
local countB = math.random(5) -- 1,2,3,4,5
-- Generate permutation
repeat
if math.random(1-countB, countA) > 0 then
countA = countA - 1
-- Do something with objA
else
countB = countB - 1
-- Do something with objB
end
until countA + countB == 0