我正在一个项目中,我已经从我创建的数组中选择了一个随机索引。这里的数组
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)
但是我得到的结果是索引的值总是在变化。 我怎么只能得到索引之一。没有变化。
答案 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时返回第一个操作数,否则返回第二个操作数。第一次运行时,randomKotak
是nil
,解析为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
这将使其他文件中的代码不会破坏此功能。