首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在love2d中从数组中获取一个随机索引

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

Stack Overflow用户
提问于 2019-06-15 18:22:32
回答 1查看 175关注 0票数 0

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

代码语言:javascript
复制
kotak = { 
    love.graphics.newImage('images/1.png'),
    love.graphics.newImage('images/2.png')
  }

我想要得到这个数组的一个索引,我的代码如下

代码语言:javascript
复制
randomKotak = love.math.random(#kotak)  
love.graphics.draw(kotak[randomKotak], 200,200, 0.05 , 1, 1, 16, 16)

但是我得到的结果是索引值总是在变化。为什么我只能得到其中一个索引。不能改变。

EN

回答 1

Stack Overflow用户

发布于 2019-06-24 09:03:56

要扩展埃戈尔·斯克里普图诺夫发布的内容,你可以这样做:

代码语言:javascript
复制
-- 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操作符将返回第一个操作数,否则返回第二个操作数。第一次运行时,randomKotaknil,解析为false。这会导致将randomKotak设置为第二个操作数(随机数生成器)。下一次运行时,randomKotak将是一个数字,Lua将其解析为true,导致randomKotak被设置为自身。

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

代码语言:javascript
复制
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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56609447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档