这是我到目前为止所做的,但似乎每当我尝试运行它时,它就会关闭。
function wait(seconds)
local start = os.time()
repeat until os.time() > start + seconds
end
function random(chance)
if math.random() <= chance then
print ("yes")
elseif math.random() > chance then
print ("no")
end
random(0.5)
wait(5)
end
这是完整的背景。
答案 0 :(得分:8)
这个代码存在一些问题,第一个问题(正如Lorenzo Donati指出的那样)是你已经将random()
内部的实际调用包装起来,给你一块从未真正做过任何事情的块(woops)。
第二个是你两次调用math.random()
,给你两个不同的值;这意味着它完全有可能使两种测试都不成真。
第三种是次要的:你正在进行两次测试 - 或者选择;第一次测试会告诉我们我们需要知道的一切:
function wait(seconds)
local start = os.time()
repeat until os.time() > start + seconds
end
function random(chance)
local r = math.random()
if r <= chance then
print ("yes")
else
print ("no")
end
end
random(0.5)
wait(5)
并且只是为了踢,我们可以用条件值替换if-block,因此:
function wait(seconds)
local start = os.time()
repeat until os.time() > start + seconds
end
function random(chance)
local r = math.random()
print(r<=chance and "yes" or "no")
end
random(0.5)
wait(5)
答案 1 :(得分:3)
可能你打算写这个:
function wait(seconds)
local start = os.time()
repeat until os.time() > start + seconds
end
function random(chance)
if math.random() <= chance then
print ("yes")
elseif math.random() > chance then
print ("no")
end
end
random(0.5)
wait(5)