我想知道是否有广泛的计时器解决方案.
我想写一个简单的游戏引擎,它会每20分钟处理一次用户输入(或者在 20ms(或任何其他时间段后)执行一次动作)并基本上通过事务更新"全局"状态,而且我打算使用futures这个解决方案应该能够处理并发警告.
你能给我一个建议吗?
mik*_*era 13
你实际上有两个不同的问题.
首先是计时器的问题.你有很多选择:
(future (loop [] (do-something) (Thread/sleep 20) (when (game-still-running) (recur))))我可能只是使用简单的线程选项 - 它很容易设置,如果你需要,可以在以后轻松破解更多功能.
第二个问题是处理游戏状态.这实际上是棘手的问题,你需要围绕你正在制作的特定类型的游戏设计它,所以我只是给出一些建议:
小智 7
现在我认为核心/异步是一个很好的选择,因为
这是草图
(require '[clojure.core.async :refer [go-loop]])
(go-loop []
(do
(do-something ...)
(Thread/sleep 1000)
(recur))))
Run Code Online (Sandbox Code Playgroud)
此解决方案假设您在JVM上编写Clojure.像这样的东西可以工作:
(import '(java.util TimerTask Timer))
(let [task (proxy [TimerTask] []
(run [] (println "Here we go!")))]
(. (new Timer) (schedule task (long 20))))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3814 次 |
| 最近记录: |