我已经这样做了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球。我在math.random中的语法有错吗? 我已经尝试了几种方法,但不知道从哪里开始。 在此先感谢您的帮助!
答案 0 :(得分:2)
是的,语法错误。见http://docs.coronalabs.com/api/library/math/random.html:
当使用两个整数m和n调用时,math.random返回[m,n]范围内的统一伪随机整数。
您应该拨打math.random(#ballImages)
进行4次通话。
如果你只想要4个球,可能不止一次,那么你就完成了。
但是如果您想要不同的球,则可能需要重绘,如果您绘制的数字与之前选择的球相对应。也就是说,如果您的math.random(#ballImages)
中有两个返回相同的数字i
,则表示"丢球#34} 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