如何在love2d中从数组中获取随机索引之一

时间:2019-06-15 10:22:32

标签: arrays random lua love2d

我正在一个项目中,我已经从我创建的数组中选择了一个随机索引。这里的数组

kotak = { 
    love.graphics.newImage('images/1.png'),
    love.graphics.newImage('images/2.png')
  }

我想获取此数组的索引之一,我的代码如下

randomKotak = love.math.random(#kotak)  
love.graphics.draw(kotak[randomKotak], 200,200, 0.05 , 1, 1, 16, 16)

但是我得到的结果是索引的值总是在变化。 我怎么只能得到索引之一。没有变化。

1 个答案:

答案 0 :(得分:0)

要扩展Egor Skriptunoff发布的内容,可以执行以下操作:

-- code...
randomKotak = randomKotak or love.math.random(#kotak)
love.graphics.draw(kotak[randomKotak], 200, 200, 0.05, 1, 1, 16, 16)
-- code...

之所以可行,是因为Lua中的or运算符将解析为true时返回第一个操作数,否则返回第二个操作数。第一次运行时,randomKotaknil,解析为false。这导致randomKotak被设置为第二个操作数(随机数)。下一次运行randomKotak将是一个数字,Lua会将其解析为true,从而将randomKotak设置为其自身。

此代码的一个问题是它创建了一个全局变量,以后可能会引起问题。最好在代码的根级别(在函数/循环之外)添加一个本地变量,将代码更改为如下所示:

local randomKotak = nil
function drawKotak() -- or whatever the function's called
    -- code...
    randomKotak = randomKotak or love.math.random(#kotak)
    love.graphics.draw(kotak[randomKotak], 200, 200, 0.05, 1, 1, 16, 16)
    -- code...
end

这将使其他文件中的代码不会破坏此功能。