我正在尝试使用Quil在 Clojure 中编写游戏。
(qc/defsketch sketch
:title "My Game"
:size [800 600]
:setup #(qc/smooth)
:draw draw
:mouse-pressed mouse-pressed
:key-pressed key-pressed)
(我可以使用(def position (atom 0))
and(swap! position inc)
来@position
制作一个移动的球,但我不知道如何缩放它。)
请注意,我向草图提供了一个用于绘图(和输入处理程序)的函数。如果我只是做一个速写,一个draw
功能就可以了。
但在我的游戏中,我需要根据主菜单、指令、关卡选择器或游戏是否是活动视图来绘制不同的东西。其中一些(主要是游戏视图)需要与它们相关联的数据,这些数据将在每次抽奖中更新。
我该怎么办?我对 Clojure 的了解越多,我就越感到困惑。(每个视图应该是满足协议的记录吗?它们应该存储为原子,还是应该将它们的内部状态存储为原子?或者游戏模拟状态应该是一个单独的原子——除非我不希望它占用内存直到游戏视图被激活......)这在 OOP 中很容易,但我想学习函数式编程。
更新
如果您对我最终所做的事情感兴趣,请参阅Mini Pinions。