我已经这样做了 2 天,但一无所获。我想从数组中选择 4 个球并随机丢弃它们,但为了让系统记住并在以后要求输入。我卡在第一点上:
local ballImages =
{
display.newImage("ball1.png"),
display.newImage("ball2.png"),
display.newImage("ball3.png"),
display.newImage("ball4.png"),
display.newImage("ball5.png"),
display.newImage("ball6.png"),
display.newImage("ball7.png"),
display.newImage("ball8.png"),
display.newImage("ball9.png"),
display.newImage("ball10.png"),
display.newImage("ball11.png"),
display.newImage("ball12.png"),
display.newImage("ball13.png"),
display.newImage("ball14.png"),
display.newImage("ball15.png"),
display.newImage("ball16.png"),
display.newImage("ball17.png"),
display.newImage("ball18.png"),
display.newImage("ball19.png"),
display.newImage("ball20.png")
}
function setup()
math.randomseed(os.time())
end
setup()
local ballImages = ballImages[math.random(4,#ballImages)]
physics.addBody(ballImages)
我只有 1 个球可以随机掉落。我的数学随机语法是错误的吗?我尝试了几种方法,但不确定从这里开始。提前感谢您的帮助!
是的,语法是错误的。请参阅 http://docs.coronalabs.com/api/library/math/random.html:
当使用两个整数 m 和 n 调用时,math.random 返回 [m, n] 范围内的统一伪随机整数。
您应该拨打 4 次电话math.random(#ballImages)
。
如果你只想要4个球,可能不止一次同一个球,你就完成了。
但是,如果您想要不同的球,如果您绘制的数字与先前选择的球相对应,则可能必须重新绘制。也就是说,如果你的两个math.random(#ballImages)
返回相同的数字i
,那就意味着"丢球"i
两次。如果这没有意义,您可以执行以下操作:
drawn = {}
local drop=4 -- how many balls to draw
while drop > 0 do -- while we have balls left to draw
local ball = math.random(#ballImages) -- draw a random ball
if drawn[ball] == nil then -- if ball wasn't selected before
drawn[ball] = 1 -- mark it as selected
physics.addBody(ballImages[ball]) -- "drop" the ball
drop = drop - 1 -- decrement how many more balls
end
end
如果您的显示和物理对象有效,那么此代码段也应该有效。看这里 : http://ideone.com/GQC2C6