J'essaie de faire un script simple pour un jeu, en changeant l'heure de la journée, mais je veux le faire rapidement. Voilà donc ce dont je parle:
function disco ( hour, minute)
setTime ( 1, 0 )
SLEEP
setTime ( 2, 0 )
SLEEP
setTime ( 3, 0 )
end
etc. Comment pourrais-je procéder?
Lua ne fournit pas de fonction sleep
standard, mais il existe plusieurs façons de l'implémenter, voir Fonction Sleep pour plus de détails.
Pour Linux, cela peut être le plus simple:
function sleep(n)
os.execute("sleep " .. tonumber(n))
end
Sous Windows, vous pouvez utiliser ping
:
function sleep(n)
if n > 0 then os.execute("ping -n " .. tonumber(n+1) .. " localhost > NUL") end
end
Celui qui utilise select
mérite une certaine attention car c'est le seul moyen portable d'obtenir une résolution en moins d'une seconde:
require "socket"
function sleep(sec)
socket.select(nil, nil, sec)
end
sleep(0.2)
Si vous avez installé Luasocket:
local socket = require 'socket'
socket.sleep(0.2)
wxLua a trois fonctions de sommeil:
local wx = require 'wx'
wx.wxSleep(12) -- sleeps for 12 seconds
wx.wxMilliSleep(1200) -- sleeps for 1200 milliseconds
wx.wxMicroSleep(1200) -- sleeps for 1200 microseconds (if the system supports such resolution)
Cette fonction homebrew a une précision jusqu'à un dixième de seconde ou moins.
function sleep (a)
local sec = tonumber(os.clock() + a);
while (os.clock() < sec) do
end
end