如何让Lua代码每次按下按钮时持续从表格中随机取值?
问题解决:按下按钮持续获取表格随机值
你的代码问题在于随机值只在程序初始化时生成一次,之后Random变量就固定了,所以按下按钮只会显示这个固定值。要实现按下按钮时重新获取随机值,需要把随机值的生成逻辑放到按钮状态判断的分支里:
修复后的代码
if gdt.LedButton0.ButtonState then -- 每次按钮按下时,重新生成随机值并赋值给LCD gdt.Lcd0.Text = myTable[math.random(#myTable)] else gdt.Lcd0.Text = Text end
原因说明
原来的代码中Random = myTable[math.random(#myTable)]只在代码执行的最开始运行一次,Random变量会一直保存这个初始随机值。把生成逻辑移到按钮判断的then块内后,每次检测到按钮按下时,都会重新调用math.random从表格里选取新的随机值,直接赋值给LCD显示。
如果需要按住按钮时持续刷新随机值,可以结合循环和延时(取决于你的运行环境支持的机制),示例如下:
while true do if gdt.LedButton0.ButtonState then gdt.Lcd0.Text = myTable[math.random(#myTable)] -- 添加适当延时,避免刷新过快 os.execute("sleep 0.5") -- 替换为你的环境对应的延时函数 else gdt.Lcd0.Text = Text end -- 根据环境需求添加循环退出条件 end
如果你的运行环境是事件驱动型(比如按扫描周期执行代码),第一种方案就足够——每次扫描到按钮按下时,都会生成新的随机值;如果需要主动循环刷新,才需要第二种写法,同时注意添加延时防止资源占用过高。
内容的提问来源于stack exchange,提问作者fmlstudios
相关产品推荐
相关产品推荐

