ipu*_*tin 6 haskell frp reactive-programming reactive-banana
似乎每个人都在使用反应性香蕉FRP框架进行电脑游戏,所以我也必须尝试.但是,我坚持早期的步骤,试图将游戏数据描述为反应性香蕉Behavior
类型.
基本上,我正在尝试拥有(更改)游戏角色列表(例如佛罗多或山姆).游戏角色可能会在每个游戏刻度上更新(建模为刻度事件).我们的想法是,每当游戏角色发生变化时,Event (Character)
都会触发一个角色,最后通过网络发送角色更新.与Asteroids.hs相比,这样做的好处应该是整个游戏状态(整个游戏角色列表)不需要通过网络发送,因为会有许多事件具有单个游戏角色而不是具有游戏角色列表的单个事件.
对于单个游戏角色,这很好用!我创建了Behavior (Character)
with mapaccum
,以便在更新字符时发送字符更新信号.我无法解决的问题是如何使用Behavior
游戏角色列表来完成这项工作.
我试图将游戏角色列表建模为一个Behavior
,因为角色可能会在游戏过程中出现.我需要在这里使用动态事件切换吗?或者,如果我不使用Behavior
单个游戏角色(并且只使用Behavior
游戏角色列表),有没有办法在我浏览角色列表时有条件地触发更新事件?或者我在这里不明白?
要管理动态的行为集合,您必须使用动态事件切换.有关演示,请参阅BarTab.hs示例.
但是,动态事件切换可能有点笨拙,并且通常可以避免它.两种常见情况是:
Behavior [a]
)的行为,而不是行为集合([Behavior a]
).该Asteroids.hs示例演示如何使用此.这是一种风格权衡:系列的各个条目不再用FRP制定,但该系列变得更容易管理.