【问题标题】:Implementing game states using reactive-banana使用响应式香蕉实现游戏状态
【发布时间】:2015-10-13 16:25:17
【问题描述】:

在我的突破实现中,有两个主要行为描述了 游戏的主要状态:

paddlePosition :: Behavior t Point
ballPosition :: Behavior t Point

两者都是根据tickEvent :: Event t () 实现的 更新它们。

gameOverEvent :: Event t () 过滤球所在的所有刻度事件 位置在屏幕下方。

我想尽快用新的行为替换paddlePositiongameOverEvent,将桨留在原地,伪代码:

newPaddlePosition = \t -> case gameOverEvent of
    [] -> paddlePosition t
    ((t',()) : _) -> paddlePosition t'

第一个问题是:我如何表达newPaddlePosition using 反应香蕉?

第二个问题有点模糊:什么是组织 整个程序取决于游戏是否结束?还有其他 诸如:如何处理ballPosition、如何绘制游戏等等 开。

【问题讨论】:

    标签: haskell reactive-programming reactive-banana


    【解决方案1】:

    您可能正在寻找动态事件切换,尤其是switchB 组合器。

    另见this question

    请注意,newPaddlePosition 函数的伪代码没有多大意义:它表示当gameOverEvent 永远不会出现时,新的桨叶位置等于paddlePosition,否则它是常数并等于事件发生时paddlePosition 的值。这是不可能在因果 FRP 库中表达的。你可能还有别的意思。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-23
      • 1970-01-01
      • 2012-08-30
      • 2017-11-22
      • 2016-01-25
      • 2011-10-12
      • 1970-01-01
      • 2013-06-20
      相关资源
      最近更新 更多