2014-06-11 159 views
0

我試圖隨機生成一個隨機數,每個隨機秒(最終目的是隨時改變塊的顏色)。生成一個隨機數,但每個隨機數在LUA/Love2d

爲此,我使用駝峯庫(http://vrld.github.io/hump/#hump.timer)。

這裏是我的代碼,我是真正的初學者在LUA/Love2d編碼。 它會生成一個數字,並且每秒顯示一次,而不是每個隨機秒數(但也會生成隨機秒數)。 我不明白爲什麼它不起作用。

local Timer = require "timer" 

function love.load() 
    text="t" 
    number2=1 
end 

local f = function() 
math.randomseed(os.time()) 
    number = math.random(2,10) 
    text="in " .. number2 .. " seconds (random)... random number =" .. number 
    return true 
end 

function love.update(dt) 

    number2 = math.random(2,4) 
    Timer.update(number2) 
    Timer.addPeriodic(number2, f) 
end 

function love.draw() 
    love.graphics.print(text, 330, 300) 
end 

感謝您的幫助!

+3

在程序中調用'math.randomseed(os.time())'一次。 – lhf

+0

我的不好,我刪除了love.update中的那個,但問題依然存在。 – hycday

+0

在更新的代碼中,您仍然在'love.update'中調用'f',這意味着'math.randomseed'仍然被調用多次。 –

回答

0

雖然我不熟悉駝峯,但似乎您可以輕鬆地使用計時器的添加函數來達到您的目的,因爲它會在x秒後調用該函數一次,從而允許您使用不同的延遲來安排下一次執行:

local timer = require("timer") 
local text = "" 

local function tick() 
    -- Generate random number 
    local newNumber = math.random(2, 10) 
    local newDelay = math.random(2, 4) 
    text = ("Current number: %d, next in %d seconds!"):format(newNumber, newDelay) 

    -- Actually schedule the next call 
    timer.add(newDelay, tick) 
end 


function love.load() 
    tick() 
end 

function love.update(dt) 
    timer.update(dt) 
end 

function love.draw() 
    love.graphics.print(text, 330, 300) 
end