0

我制作了一个游戏,它使用时间来计算重力对时间(速度和运动)的影响。虽然游戏主要使用 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)
4

1 回答 1

0

不,在 R5RS 中没有线程原语(检查规范的索引以查看可用的过程)。而且它不能仅根据 R5RS 来实现,因为在某些时候您必须访问本机操作系统调用。

于 2013-04-02T20:13:10.757 回答