我制作了一个游戏,它使用时间来计算重力对时间(速度和运动)的影响。虽然游戏主要使用 r5rs 函数,但我使用thread
,sleep
和其他函数来更新和记住时间,这些函数在球拍中定义。现在我想让 te 游戏在只有 r5rs 可用的微控制器上运行。是否可以仅使用 r5rs 制作类似的东西?
这是我目前使用的代码(使用球拍功能):
(define (make-timer)
(define time 0)
(define wait-time (/ 1 CPU_FREQ))
(define timer-thread
(thread (lambda ()
(let loop ()
(sleep wait-time)
(set! time (+ 1 time))
(loop)))))
(define (dispatch msg)
(cond ((eq? msg 'time) time)
((eq? msg 'start)
(thread-resume timer-thread))
((eq? msg 'restart)
(set! time 0)
(thread-resume timer-thread))
((eq? msg 'reset)
(thread-suspend timer-thread)
(set! time 0))
((eq? msg 'stop) (thread-suspend timer-thread))
((eq? msg 'set-period!)
(lambda (period)
(set! wait-time (* (+ period 1) (/ 1 CPU_FREQ)))))
))
(thread-suspend timer-thread)
(set! time 0)
dispatch)