如何在Lua中实现一个秒表?

你如何在 Lua 中制作一个秒表?

点赞
用户4657956
用户4657956

我很遗憾不了解Codea,你很可能会发现该库提供了gettimesleep函数。然而,作为纯Lua选项(前提是您使用luasocket),以下代码实现了一个可构建的示例。

socket = require('socket')

-- 定义秒表
local start_time

function start()
    -- 开始秒表
    start_time = socket.gettime() - 3800
end

function seconds_ellapsed()
    -- 返回秒表启动后经过的秒数
    return socket.gettime() - start_time
end

-- 作为示例无限运行秒表
start()

while true do

    -- 获取经过的时间并将其转换为小时、分钟和秒钟
    ellapsed = seconds_ellapsed()
    hours = math.floor(ellapsed / 3600)
    minutes = math.floor((ellapsed - (hours * 3600)) / 60)
    seconds = math.floor((ellapsed - (hours * 3600) - (minutes * 60)))

    -- 将经过的时间打印到命令行
    print(hours .. 'h', minutes .. 'm', seconds .. 's')

    -- 每次更新之间等待一秒钟
    socket.sleep(1)

end

您还可以尝试使用os.clock,但Lua没有内置机制以设置线程休眠一段时间(这是我的示例需要的,所以我选择使用了 luasocket)。在这里,有一篇有用的文章介绍了实现Lua中sleep功能的可能方法:http://lua-users.org/wiki/SleepFunction

2015-05-24 14:37:13
用户2726734
用户2726734

这是一个非常基本的秒表,当用户轻触屏幕时开始/重置计时器。此示例显示已经过的分钟和秒数。如果要计算毫秒,可以使用ElapsedTime而不是os.time(),并自己计算小时、分钟等。此外,我没有我的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

```

2015-05-25 14:41:17