【问题标题】:math.random and corona incorrect syntax?math.random 和 corona 语法不正确?
【发布时间】:2015-02-14 20:51:44
【问题描述】:

我已经这样做了 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 语法错了吗? 我已经尝试了几种方法,但不确定从这里去哪里。 提前感谢您的帮助!

【问题讨论】:

  • 我看到您的很多问题都是关于 Corona 的非常基本的问题。您应该按照自己的方式学习一些教程(例如参见 coronalabs.com/resources/tutorials/getting-started-with-corona)。您还应该深入了解 stackoverflow 的导览(stackoverflow.com/tour,虽然很短,但请阅读全部内容)以了解该网站的运作方式以及您可以提出哪些问题。
  • @VeryNewVeryBad 将此标记为已解决,如果您成功了。

标签: math random lua coronasdk


【解决方案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    

如果您的显示和物理对象可以正常工作,那么这个 sn-p 也应该如此。见这里:http://ideone.com/GQC2C6

【讨论】:

  • 感谢您的快速回复。我查看了 API,说实话,我不太了解它。你的意思是重绘数组吗?
  • API 说的是这样的:math.random() 在 0 和 1 之间绘制随机浮点值,math.random(n)math.random(n,m) 分别返回 1 和 n 以及 n 和 m 之间的整数。我将进行编辑以澄清重绘。
  • 如果可以的话,那就太好了 - 我想如果我能理解这一点,我将能够继续 - 这太令人沮丧了!也许我需要停止看它 20 分钟 :(
  • 不,它不起作用 - 不确定问题出在哪里。它现在只是一个空白屏幕......我是一个灾难!
  • @VeryNewVeryBad 我还有几个语法错误。现在试试。如果它不起作用,请查看 ideone 链接,它在那里起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-02
  • 2010-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多