如何在Lua中实施秒表?

时间:2015-05-24 14:10:30

标签: lua stopwatch

你怎么在Lua制作秒表?

2 个答案:

答案 0 :(得分:0)

我根本不了解Codea,我很可能会发现该库为gettimesleep提供了一些功能。但是,作为纯Lua选项(附带使用luasocket的附带条件),以下代码实现了可以构建的示例。

socket = require('socket')


-- Define the stop watch
local start_time

function start()
    -- Start the stop watch
    start_time = socket.gettime() - 3800
end

function seconds_ellapsed()
    -- Return the number of seconds since the stop watch was started
    return socket.gettime() - start_time
end


-- As an example run the stop watch indefinately
start()

while true do

    -- Get the time ellapsed and convert it to hours, minutes and seconds
    ellapsed = seconds_ellapsed()
    hours = math.floor(ellapsed / 3600)
    minutes = math.floor((ellapsed - (hours * 3600)) / 60)
    seconds = math.floor((ellapsed - (hours * 3600) - (minutes * 60)))

    -- Print the time ellapsed to the command line
    print(hours .. 'h', minutes .. 'm', seconds .. 's')

    -- Wait a second between each update
    socket.sleep(1)

end

你也可以使用os.clock,但Lua没有内置机制来设置线程休眠一段时间(这是我的例子所必需的所以我选择使用luasocket)。有一篇关于在lua中实现睡眠的可能方法的有用文章:http://lua-users.org/wiki/SleepFunction

答案 1 :(得分:0)

这是一个非常基本的秒表,当用户点击屏幕时它会启动/重置。此示例显示经过的分钟和秒。如果您想要计算毫秒数,则可以使用ElapsedTime代替os.time()并自行计算小时数,分钟数等,而不是os.date()。另外,我没有iPad,所以可能存在错误。

function setup()
   fontSize(20)
   background(100, 120, 160)
   fill(255)
   toggle_timer()
end

function toggle_timer()
  timer_on = not timer_on
  if timer_on then
    start = os.time()
  end
end

function draw()
   if timer_on then
      text(os.date("%M:%S", os.difftime(os.time(), start)),
        WIDTH / 2, HEIGHT / 2)
   end
end

function touched(touch)
   if touch.state == BEGAN then
      toggle_timer()
   end
end