我做了一个游戏,它利用时间来计算重力对时间(速度和运动)的影响。虽然游戏主要使用r5rs函数,但我使用thread
,sleep
和其他函数来更新和记住在球拍中定义的时间。
现在我想让微型游戏工作在只有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)