我正在做一个项目,我从我创建的数组中选择了一个随机索引。这里的数组
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)
但是我得到的结果是索引值总是在变化。为什么我只能得到其中一个索引。不能改变。
发布于 2019-06-24 09:03:56
要扩展埃戈尔·斯克里普图诺夫发布的内容,你可以这样做:
-- code...
randomKotak = randomKotak or love.math.random(#kotak)
love.graphics.draw(kotak[randomKotak], 200, 200, 0.05, 1, 1, 16, 16)
-- code...
这样做的原因是,如果解析为true,Lua中的or
操作符将返回第一个操作数,否则返回第二个操作数。第一次运行时,randomKotak
为nil
,解析为false。这会导致将randomKotak
设置为第二个操作数(随机数生成器)。下一次运行时,randomKotak
将是一个数字,Lua将其解析为true,导致randomKotak
被设置为自身。
这段代码的一个问题是它创建了一个全局变量,这可能会在以后导致问题。在代码中的根级别(在函数/循环之外)添加一个local可能更好,将代码更改为如下所示:
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
这将使其他文件中的代码不会中断此功能。
https://stackoverflow.com/questions/56609447
复制相似问题