0

時間の関係(速度と移動)で重力の影響を計算するために時間を使用するゲームを作成しました。ゲームは主に 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)
4

1 に答える 1