math.random和corona语法不正确?

时间:2014-12-16 14:02:22

标签: math random lua corona

我已经这样做了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中的语法有错吗? 我已经尝试了几种方法,但不知道从哪里开始。 在此先感谢您的帮助!

1 个答案:

答案 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