如何在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)

但是我得到的结果是索引的值一直在变化。 我该如何只获取一个索引,而不是一直变化。

点赞
用户5269148
用户5269148

为了扩展Egor Skriptunoff的帖子,你可以这样做:

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

这个代码工作是因为Lua中的or运算符将返回第一个运算数,如果它解析为真,或者第二个运算数如果不是。第一次运行时,randomKotaknil,解析为假。这会导致randomKotak被设置为第二个运算数(随机器)。下一次运行,randomKotak将是一个数字,Lua将解析为真,导致randomKotak设置为它自己。

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

local randomKotak = nil
function drawKotak() -- 或者函数叫什么
    -- 代码...
    randomKotak = randomKotak or love.math.random(#kotak)
    love.graphics.draw(kotak[randomKotak], 200, 200, 0.05, 1, 1, 16, 16)
    -- 代码...
end

这将使其他文件中的代码不会干扰此函数。

2019-06-24 01:03:56